我有一个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')]")
答案 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]