Python selenium无法提取文本

2024-10-02 20:39:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从列表中提取文本,这是URL:

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

这是我的代码:

1º我发现除名(ul)

对于ul中的每个li,打印文本

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)

这段代码返回空格而不是文本,我做错了什么

有些人的回答是,他们说话时没有检查任何东西。 1ºxpath肯定在那里,请检查它 2º页面的html中有29个H2,而不仅仅是一个

我收到了一些人的反对票,他们说的是我想的,甚至没有检查任何东西。 我要提取的是以下文本:

• 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.


Tags: 代码文本esdelielementulcon
2条回答

1我设法从我所在地区获得了数据,但我不得不花一些时间从国家名单中选择西班牙。 请注意,我避免使用xpath定位器,因为它们太长了。 所有的解释都在代码的注释中

2从元素中获取文本。通常使用文本,但在这种情况下不起作用。所以get_attribute("innerHTML")才是你真正需要的

我留下了我用过的所有等待。您可以自己调试并删除不必要的

解决方案:

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()

结果:

• 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.

您定义的xpath没有找到元素。
这就是为什么ul实际上是一个nullli是一个空列表

相关问题 更多 >