【发布时间】:2013-07-23 10:19:44
【问题描述】:
我想找到一棵树的第一次出现。示例:
<div id='post>
<p>text1</p>
<p>text2</p>
<img src="a.jpg">
<img src="b.jpg">
<p>text3</p>
<p>text4</p>
<img src="c.jpg">
<p>text5</p>
</div>
我想找到“p/img/@src”的第一次出现。
当我进行 xpath 搜索时:.//div/p/img[1]/@src
它给出了 2 个命中,a.jpg 和 c.jpg
只有第一次出现 (a.jpg) 的 xpath 是什么。
我会说.//div/(p/img)[1]/@src,但当然不行。
【问题讨论】:
-
p/img/@src的第一次出现?那就是(p/img/@src)[1]。但是p/img表示img父元素的img子元素,而您的示例仅是p元素的img兄弟元素。 -
但括号“(”“)”在 lxml 中不起作用。我收到此错误: exceptions.ValueError: Invalid XPath: //div[@id="post"]/div[@class="body"]/(p/img/@src)[1]
-
括号应该是:(//div[@id="post"]/div[@class="body"]/p/img/@src)[1] 然后就可以了。谢谢