a/img/..//text() 和 a//text() 之间的区别
Difference between a/img/..//text() and a//text()
我正在使用 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()
之间的区别在于,第一个 return 文本节点 ONLY 来自 a
元素将 img
元素作为子元素,而第二个将 return 来自 a
元素的文本节点,而不管它们是否具有 img
元素作为子元素。
换句话说,a/img/..//text()
也可以写成a[img]//text()
;将其与 a//text()
.
进行比较
我正在使用 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()
之间的区别在于,第一个 return 文本节点 ONLY 来自 a
元素将 img
元素作为子元素,而第二个将 return 来自 a
元素的文本节点,而不管它们是否具有 img
元素作为子元素。
换句话说,a/img/..//text()
也可以写成a[img]//text()
;将其与 a//text()
.