selenium - python'lxml'解析html,通过xpath获取数据不起作用
问题描述
我有一个使用 Python 库获取的网页:'selenium-requests' GET 方法。
response = self.driver.request('GET', url)
response.content
是返回的 HTML 的字节表示。
在浏览器(Chrome)中,我使用了一个名为“xpath-finder”的浏览器插件来查找数据字段(文本)的 xpath。
我还在 Firefox 中打开了该页面,并且得到了相同的 xpath。我相信 xpath 是正确的。
我得到了 HTML,然后需要使用 xpath 提取数据。
import lxml
def extract_data(self, html_bytes): # passing: response.content (bytes)
xpath_geocode = "/html/body/div[5]/table/tbody/tr/td/div[3]/div/table/tbody/tr[1]/td[4]"
tree = lxml.html.fromstring(html_bytes)
geocode_info = tree.xpath(xpath_geocode)
print('geocode_info:', geocode_info) # this prints: geocode_info: [] <== nada
# in fact nothing is there at all, this does not enter the for loop, and prints nothing
for e in tree.xpath(xpath_geocode):
print(e.text_content)
我有正确的 xpath,我不相信产生相同 xpath 的两种方法是错误的(Chrome 浏览器插件和 Firefox 检查,右键单击,复制 xpath)。
我在这里做错了什么?
难道是这样:
tree = lxml.html.fromstring(html_bytes)
更改 html,使得 xpath 不再有效?如果是这样,我怎么做才能使 HTML 不改变?
或者我怎样才能从'tree'中获得正确的xpath,或者找到它?(通过打印等)。
解决方案
推荐阅读
- android-studio - 单击单选按钮时如何显示图像
- c# - 如何提取第一个字符和之后的数字,直到在字符串中找到一个字符(az) - C# 2.0
- javascript - 如何从 React Native FlatList 中的异步函数返回值?
- c# - System.TypeLoadException:“MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory”类型中的方法“创建”
- angular - 带有新选项的 Highcharts Angular 更新图表 - 包括链接系列
- macos - 通过 NSAppleScript 发送击键时出现错误 1002
- java - JPA Native Query - 导致未知列错误的参数,未转换为字符串
- firebase - Firebase 安全规则不起作用 - 无法弄清楚原因
- html - 如何在旁边显示固定文本
- php - Firebase 数据库查找密钥