python - 我在一个网站上发现了一个不可见的跨度,我无法抓取它!为什么?
问题描述
目前我正在尝试从网站上抓取数据。因此我使用硒。一切正常。直到我意识到我必须刮掉一个工具提示文本。
我已经在 stackoverflow 上找到了不同的线程来提供答案。无论如何,到目前为止我还没有设法解决这个问题。
实际上有一个我无法阅读的跨度。我试着这样读:
bewertung = driver.find_elements_by_xpath('//span[@class="a-icon-alt"]')
for item in bewertung:
print(item.text)
所以 Selenium 找到了这个元素。但不幸的是,'.text' 什么也没返回。为什么总是空的?第一个屏幕截图的跨度是什么?顺便提一句。它也不会显示在网站上。
解决方案
既然你提到了Selenium finds this element
,我假设你必须打印len
列表bewertung
就像是
print(len(bewertung))
如果这个列表中有一些元素,你可能会使用innerText
bewertung = driver.find_elements_by_xpath('//span[@class="a-icon-alt"]')
for item in bewertung:
print(item.get_attribute("innerText"))
请注意,您正在使用find_elements
which 不会抛出任何错误,如果它没有找到element
它,它将返回一个empty list
.
所以如果你改用find_element
它,它会抛出确切的错误。
另外,我认为您已经xpath
完成了跨度(不会出现在 UI 中,有时它们直到触发某些操作才会出现。)
您可以尝试改用它xpath
:
//i[@data-hook='average-stars-rating-anywhere']//span[@data-hook='acr-average-stars-rating-text']
代码中是这样的:
bewertung = driver.find_elements_by_xpath("//i[@data-hook='average-stars-rating-anywhere']//span[@data-hook='acr-average-stars-rating-text']")
for item in bewertung:
print(item.text)
推荐阅读
- grails - Grails 4.0.11 运行脚本给出错误 Context failed to load: null
- java - 在 Java 中是否可以缩小泛型类的子类中的泛型类型?
- javascript - 从工作表文件下拉到 html 表单
- sql - SQL Alchemy 尝试通过 Windows 用户而不是 URL 中指定的用户登录
- json - 将地图数据从 API 传递到多个屏幕?
- snowflake-cloud-data-platform - DataGrip Snowflake 连接器中缺少“身份验证器”
- reactjs - 如何实现 react-autosuggest 在“input-focus”中加载建议?
- r - 聚合到自定义(十进制)分辨率
- java - 如何在嵌套的arraylist中输入
- vim - 如何使用 Vim 搜索查找以 4 个字符单词开头的行?