Saya mencoba mengikis teks dari daftar, ini URL-nya:

https://www.eneba.com/es/lego-dimensions-starter-pack-playstation-4

Ini kode saya:

1º Saya menemukan daftar de (ul)

2º untuk setiap li in ul cetak teks

ul = driver.find_element_by_xpath('//h2[2]/following-sibling::ul') 

li = ul.find_elements_by_tag_name('li')
#print(li.text)

for element in li:
    print(element.text)

Kode ini mengembalikan spasi kosong alih-alih teks, apa yang saya lakukan salah?

Ada beberapa jawaban orang yang mengatakan sesuatu tanpa memeriksa apa pun. 1º Xpath pasti ada, periksa 2º Ada 29 H2 di html halaman, bukan hanya satu

Saya menerima suara negatif dari orang-orang yang mengatakan 1º hal yang dipikirkan tanpa memeriksa apa pun. Yang ingin saya ekstrak adalah teks ini:

• Rompecabezas - penyelesai varios acertijos es una de las mecánicas centrales del juego; • Para todos los públicos – El juego es apropiado para jugadores de todas las edades; • Arcade - los jugadores deben terminar con éxito los niveles que aumentan en dificultad a medida que avanzan en el juego; • Acción - este título termasuk desafíos que deben superarse utilizando habilidades como presisi, tiempo de respuesta rápido, dll.; • Superhéroes - Los jugadores entran en un mundo peligroso, donde los nicos capaces de detener el crimen son los héroes bedecidos con poderes nicos; • Un jugador - el juego presenta una campaña en solitario con una historia; • Multijugador local - esta función izin varias personas participen en los mismos partidos, ya laut a través de la pantalla dividida o la misma conexión de red.

-1
V-cash 12 Mei 2021, 17:15

2 jawaban

Jawaban Terbaik

1 Saya telah berhasil mendapatkan data dari wilayah saya, tetapi saya harus meluangkan waktu untuk memilih Spanyol dari daftar negara. Harap dicatat bahwa saya menghindari menggunakan pencari xpath karena akan terlalu panjang. Semua penjelasan ada di komentar ke kode.

2 Untuk mendapatkan teks dari elemen .text biasanya digunakan, tetapi untuk kasus ini tidak berfungsi. Jadi get_attribute("innerHTML") adalah yang benar-benar Anda butuhkan.

Saya meninggalkan semua penantian yang saya gunakan. ANDA dapat men-debug sendiri dan menghapus yang tidak perlu.

Solusi:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.get('https://www.eneba.com/es/lego-dimensions-starter-pack-playstation-4')

wait = WebDriverWait(driver, 15)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "._1FArM6>.qGNWom.qGNWom"))).click()  # accept cookies
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".EcNujK._2afX4x._1OhNBA"))).click()  # click region button
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#region .css-1hwfws3"))).click()  # change region

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#region .react-select__input>input")))
driver.find_element_by_css_selector("#region .react-select__input>input").send_keys("spa")  # input country name
driver.find_element_by_css_selector("#react-select-2-option-5").click()  # select found country
driver.find_element_by_css_selector("._3Fpvn5>button[type='submit']").click()  # submit country
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div[itemprop=description]>ul>li")))  # wait for all li elements
cards = driver.find_elements_by_css_selector("div[itemprop=description]>ul>li")
for card in cards:
    print(card.get_attribute("innerHTML"))
driver.close()
driver.quit()

Hasil:

• Rompecabezas - resolver varios acertijos es una de las mecánicas centrales del juego;
• Para todos los públicos – El juego es apropiado para jugadores de todas las edades;
• Arcade - los jugadores deben terminar con éxito los niveles que aumentan en dificultad a medida que avanzan en el juego;
• Acción - este título incluye desafíos que deben superarse utilizando habilidades como precisión, tiempo de respuesta rápido, etc.;
• Superhéroes - Los jugadores entran en un mundo peligroso, donde los únicos capaces de detener el crimen son los héroes bendecidos con poderes únicos;
• Un jugador - el juego presenta una campaña en solitario con una historia;
• Multijugador local - esta función permite que varias personas participen en los mismos partidos, ya sea a través de la pantalla dividida o la misma conexión de red.
1
vitaliis 12 Mei 2021, 17:18

Tidak ada elemen yang terletak di xpath yang Anda tetapkan '//h2[2]/following-sibling::ul.
Inilah mengapa ul sebenarnya adalah null dan li adalah daftar kosong.

0
Prophet 12 Mei 2021, 14:22