python - Python selenium 无法提取文本
问题描述
我正在尝试从列表中抓取文本,这是 URL:
https://www.eneba.com/es/lego-dimensions-starter-pack-playstation-4
这是我的代码:
1º 我找到清单 (ul)
ul 中的每个 li 2º 打印文本
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,而不仅仅是一个
我收到了一些人的反对票,他们说 1º 的事情,甚至没有检查任何东西。我要提取的是这段文字:
• 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 等;• 超级英雄——Los jugadores entran en un mundo peligroso, donde los únicos capaces de detener el crimen son los héroesbendecidos 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 conxión de red。
解决方案
1我已经设法从我所在的地区获取数据,但我不得不花一些时间从国家列表中选择西班牙。请注意,我避免使用 xpath 定位器,因为它们太长了。所有解释都在代码的注释中。
2要从元素中获取文本,通常使用 .text,但在这种情况下是行不通的。你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.
推荐阅读
- java - 如何以属性样式配置 log4j csv 布局?
- angular - switchMap 处理 Angular 中的可观察对象列表
- xml - 如何使用 XSLT 将父节点添加到一组节点
- jquery - 无法使用 FireFox 中的事件对象访问 relatedTarget
- active-directory - Active Directory 中的域组件是否与我的帐户所在的域相同?
- php - 如何更改数组项?
- jquery - 可滚动日期并单击日期显示特定内容
- python - 如何在python中根据grafana json格式动态地将键映射到列和值到行
- android - 如何从 PreferenceScreen 为我的 Android 应用启动设备通知设置
- java - 使用java查找并替换docx中每个部分的不同标题中的文本