我想选择所有article
元素,这些元素不包含类为status
的span
元素,并且嵌套的a
元素包含href
属性,该属性包含文本“rent.html”。
我已经成功地得到了a
元素,如下所示:response.xpath('//article[@class="car"]//a[contains(@href,"rent.html")]')
但是阅读here并尝试选择第一个父元素article
,返回“data=0”response.xpath('//article[@class="car"]//a[contains(@href,"rent.html")]//parent::article and not //article[@class="car"]//span[@class="status"]')
我也试过this。response.xpath('//article[@class="car"][//a[contains(@href,"rent.html")]/article and not //article[@class="car"]//span[@class="status"]')')
我不知道对于我的用例该用什么表达。
<article class="car">
<div>
<div class="container">
<a href="/34625030/rent.html">
</a>
</div>
</div>
</article>
<article class="car">
<div>
<div class="container">
<a href="/34625230/rent.html">
</a>
</div>
</div>
</article>
<article class="car">
<div>
<div class="container">
<a href="/12325230/buy.html">
</a>
</div>
</div>
</article>
<article class="car">
<div>
<div class="container">
<a href="/34632230/rent.html">
</a>
</div>
</div>
<span class="status">Rented</span>
</article>
1条答案
按热度按时间bfhwhh0e1#
下面的XPath表达式将完成以下工作:
整个命令为:
说明:
将需求转换为XPath语法。
"选择所有元素
article
"-//article
"不包含具有类状态的span元素"-
[not(.//span[@class='status'])]
"并且其中嵌套的a元素包含href属性,该属性包含文本" rent.html ""-
[.//a[contains(@href,'rent.html')]]
我在共享的示例XML上测试了上面的XPath,它工作正常。