python-3.x - 在 scrapy 中返回空列表的 XPath 表达式

标签 python-3.x xpath web-scraping scrapy

我正在抓取http://stats.espncricinfo.com/ci/engine/records/index.html?id=2;type=team

我需要的是附加到 XPath 表达式的链接

/html/body/div[1]/div[3]/div[4]/table/tbody/tr/td[1]/div[2]/table[1]/tbody/tr/td/ul[2]/li/a[2]

在页面中它是由 "One-day Internationals" 标记的元素在按年份排列的比赛结果列表下。上述表达式是使用 Firefox 扩展 Firebug 获得的。

但是它返回一个空列表。尝试过使用替代 xpath 表达式,例如

//div[@id="ciHomeContentlhs"]/table/tbody/tr/td[1]/div/table[2]/tbody/tr/td/ul/li/a[2]/@href

结果相同。

Xpath 表达式

//div[@id="ciHomeContentlhs"]/table

正在给我 table 。然而

//div[@id="ciHomeContentlhs"]/table/tbody

返回一个空列表。我已经测试了 xpath 表达式 http://videlibri.sourceforge.net/cgi-bin/xidelcgi它显示了所需的 href或节点作为输出。我似乎无法在 Python 上类。

最佳答案

<tbody>元素不是初始 HTML 的一部分源 - 它是由浏览器解析器生成的,因此您不应该在 XPath 中使用它表达。

您可以使用链接文本来匹配确切的元素:

//a[text()="One-Day Internationals"]

关于python-3.x - 在 scrapy 中返回空列表的 XPath 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195814/

相关文章:

python - 除以列表数组中的每个值

python - 欧拉计划 78 - 硬币分区

python - 如何从 Instagram 网络浏览器中抓取关注者?

javascript - 通过selenium Python复制粘贴?

python - 使用 lxml 和 Xpath 抓取一个元素

python - 让父类使用子类记录器名称

python - 在 python3 中检测到输入之前如何执行某些操作?

c# - 获取当前 XmlReader 位置的 'path'

python xpath 返回空列表 - exilead

java - xpath可以用来搜索网站的链接吗?