我正在使用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/