-1

我有一个 html 表格,我正在尝试查找具有 href 标记的行,该标记的文本内容中包含“取消订阅”一词。我正在使用 lxml、python 和 xpath - 我可以使用这个找到行:

row_to_find = table.xpath("//tr[contains(descendant::*, 'Unsubscribe')]")[0]

但是上面没有在href中找到这个..并且以下不起作用..

row_to_find = tables.xpath(".//tr/*/a[contains(text(), 'Unsubscribe')]")
4

1 回答 1

0

这两个都可以工作:

//a[.="Unsubscribe"]/ancestor::tr
//tr[.//a[.="Unsubscribe"]]
  • 第一个说,“找到一个<a>文本是'取消订阅'的,然后找到它的祖先<tr>元素。”

  • 第二个说,“在任何地方找到一个<tr>,但前提是它有一个<a>带有文本'取消订阅'的后代”

如果您的表本身包含在另一个表中,那么两者都会给您误报,因此有另一个<tr>匹配这个非常松散的标准。您可以通过提供更准确的路径来收紧它,例如

//a[.="Unsubscribe"]/parent::*/parent::tr
//tr[./*/a[.="Unsubscribe"]]

…或者(对于第一个)通过指定您只想要第一个(最接近的)<tr>

//a[.="Unsubscribe"]/ancestor::tr[1]
于 2013-04-16T04:58:26.213 回答