xpath - a/img/..//text()和a//text()之间的区别

标签 xpath scrapy lxml lxml.html

我正在使用Scrapy和lxml树来整理html树。

我注意到这两个xpath表达式之间存在差异。我觉得它们是可以互换的。有人可以解释一下两者之间的区别吗?

response.xpath('/html/body/div/table/tr/td/table/tr/td/table/tr/td/table/tr/td/table/tr/td/a/img/..//text()').extract()

response.xpath('/html/body/div/table/tr/td/table/tr/td/table/tr/td/table/tr/td/table/tr/td/a//text()').extract()

最佳答案

a/img/..//text()a//text()的区别在于,第一个将仅从以a元素作为子元素的img元素返回文本节点,而第二个将从a元素返回文本节点,无论它们是否具有img元素作为子元素。

换句话说,a/img/..//text()可以等同地写为a[img]//text();与a//text()进行比较。

关于xpath - a/img/..//text()和a//text()之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856651/

相关文章:

python - 为什么我的 for 循环会覆盖字典中以前的值? (python3)

c++ - 使用 XPath 在 QDomDocument 中搜索节点

python - Scrapy Spider 不提取 xpath 数据

python - 如何网络抓取 NBA 的首发阵容?

python - jinja + form + unicode 控制字符 + xml/docx 集成

web-scraping - Scrapy shell 与剧作家

xpath - Selenium WebDriver findElement(By.xpath()) 对我不起作用

javascript - XPath 选择属性在 Chrome 上失败

sql - 插入时丢失特殊字符

search - 拼凑不导出数据到 Elasticsearch