使用xpath,如何从第二段获取除斜体之外的所有锚标签? (问题和示例已经简化。想象一下包含多个<p>
和<a>
的常规HTML页面。
<html><body>
<p>
<a href="a.html">A</a>
<b><a href="b.html">B</a></b>
<i><a href="c.html">C</a></i>
</p>
<p>
<b><a href="e.html">E</a></b>
<a href="f.html">F</a>
<i><a href="g.html">G</a></i>
</p>
</body></html>
应该得到:
<a href="e.html">
<a href="f.html">
我有什么:
root.xpath('//body//p')[1].xpath('a[not(self::i)]')
我只是得到:
`<a href="f.html">`
答案 0 :(得分:2)
尝试使用以下XPath获取所需的输出:
//p[2]//a[not(parent::i)]
答案 1 :(得分:1)
作为@Andersson commented,我们不清楚你的a
元素应该在哪里结束。
假设您的a
元素意味着自我关闭,
<html><body>
<p>
<a href="a.html"/>
<b><a href="b.html"/></b>
<i><a href="c.html"/></i>
</p>
<p>
<b><a href="e.html"/></b>
<a href="f.html"/>
<i><a href="g.html"/></i>
</p>
</body>
</html>
然后是这个XPath,
/html/body/p[2]//a[not(parent::i)]
选择其父级不是a
元素的第二段的所有i
后代:
<a href="e.html"/>
<a href="f.html"/>
信用:感谢@Andersson的纠正。请upvote his answer。感谢。