在表格中查找具有特定文本的href

时间:2013-04-16 03:44:12

标签: python xpath lxml

我有一个html表,我试图找到一个带有href标签的行,其中的文本内容中包含“Unsubscribe”字样。我正在使用lxml,python和xpath - 我可以使用这个找到行:

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

但上面的内容并没有在href中找到..以下内容不起作用..

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

1 个答案:

答案 0 :(得分: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]