在选项卡中查找具有特定文本的href

2024-04-27 23:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个html表,我试图找到一行有一个href标记,其文本内容中有“Unsubscribe”一词。我正在使用lxml、python和xpath—我可以使用以下命令找到行:

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

但是上面的a href中找不到这个。。下面的方法不起作用。。你知道吗

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

Tags: to标记文本命令内容htmltablefind
1条回答
网友
1楼 · 发布于 2024-04-27 23:48:24

这两种方法都可以:

//a[.="Unsubscribe"]/ancestor::tr
//tr[.//a[.="Unsubscribe"]]
  • 第一种说法是,“找到一个<a>,它的文本是‘Unsubscribe’,然后找到它的祖先<tr>元素。”

  • 第二种说法是,“在任何地方找到一个<tr>,但前提是它的后代<a>带有文本‘Unsubscribe’”

如果您的表本身被包装在另一个表中,并且因此有另一个<tr>与这个非常松散的条件匹配,那么这两个表都会给您带来误报。你可以通过提供一个更精确的路径来收紧它

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

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

//a[.="Unsubscribe"]/ancestor::tr[1]

相关问题 更多 >