3

在 lxml 中,我使用 xpath 选择表中的所有 tr(具有不同的行数),除了最后两行包含乱码。

是否存在排除最后两行的模式匹配?我正在查看 xpath 教程,显然有一个“except”运算符和一个“last()”,但似乎无法让我的代码正常工作。

到目前为止,我有这个。我要在这个模式中添加什么以使其排除最后两行?主要问题是 tr 变化的数量。

result = doc.xpath("//tr")

我想我可以把它变成一个列表并删除最后两个元素,但是有没有更简单/优雅的解决方案?

提前致谢!

4

2 回答 2

9

使用

expressionSelectingTheTable/tr[not(position() > last() -2)]

whereexpressionSelectingTheTable应替换为选择表的特定 XPath 表达式,针对该表提出问题(例如//table[@id='foo']

这个单一的 XPath 表达式选择父级的所有tr子级table,其位置不是最后两个之一。

于 2011-02-11T17:41:49.920 回答
2
result = doc.xpath("//tr")[0:-2]

应该做的伎俩。

于 2011-02-11T05:57:26.207 回答