如何使用xpath选择全局最后一个文本节点? 我试过这个,但它给了我文档每个上下文中的最后一个节点。
lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')
['1', '3', '5', '6']
我可以做到这一点,但它在时间和空间上都是低效的,特别是当文档变大时。
lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')[-1]
'6'
我尝试使用-1的索引,但这给了我一个空列表。我尝试使用一些反向轴(这样我可以用1来索引),但我无法让它们在全局环境中工作。
答案 0 :(得分:11)
使用强>:
(//text())[last()]
这是常见问题。
解释:
XPath伪运算符//
的优先级(优先级)低于[]
运算符,后者与之前的节点测试绑定更强。
与数学和各种语言一样,覆盖默认优先级的方法是使用括号。