我有这段代码:
<table cellspacing="1" cellpadding="1" border="0">
<tbody>
<tr>
<td>Something else</td>
</tr>
<tr>
<td valign="top">
<a href="http://exact url">Something</a>
</td>
<td valign="top">Something else</td>
</tr>
</tbody>
</table>
我想找到Table但很难定位它(使用相同的代码就好了10次)。但我知道URL中的内容。我怎样才能获得父表?
答案 0 :(得分:5)
如果t
是此XML代码段的etree
,那么您要查找的链接是
t.xpath('//a[@href = "http://exact url"]')[0]
从那里,您可以使用table
轴转到ancestor
:
t.xpath('//a[@href = "http://exact url"]/ancestor::table')[-1]
答案 1 :(得分:2)
使用[]过滤表格。请注意,该属性是孙//table[.//@href="blah"]
或//a[@href="blah"]//ancestor::table
答案 2 :(得分:2)
纯XPath解决方案。
使用强>:
(//a[@href = "http://exact url"])[1]/ancestor::table[1]
这将选择XML文档中第一个table
元素的第一个祖先a
,其href
属性为字符串"http://exact url"
的字符串值。
这提供了正确的table
元素,即使在存在嵌套表的情况下,每个表都有想要的a
元素作为后代。在这种情况下,上面的XPath表达式选择最里面的这样的table
- 与当前接受的答案相反,它获得最外层的 table
祖先
答案 3 :(得分:1)
//a[@href="http://exact url"]/../../..
您需要3个..
才能到达表格元素。