xpath:如何在不同的轴上组合多个条件



我尝试根据以下三个条件提取所有链接:

  • 必须是<div data-test="cond1">
  • 的一部分
  • 必须有<a href="..." class="cond2">
  • 不能有<img src="..." class="cond3">

结果应为"/product/1234"

<div data-test="test1">
<div>
<div data-test="cond1">
<a href="/product/1234" class="cond2">Link 1</a>
<div class="test4">
<div class="test5">
<div class="test6">
<div class="test7">
<div class="test8">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div data-test="test2">
<div>
<div data-test="cond1">
<a href="/product/5678" class="cond2">Link 2</a>
<div class="test4">
<div class="test5">
<div class="test6">
<div class="test7">
<div class="test8">
<img src="bild.jpg" class="cond3">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

我可以使用下面的xpath查询提取链接。

//div[starts-with(@data-test,"cond")]/a[starts-with(@class,"cond")]/@href
我知道第一部分是没有必要的。但安全总比后悔好。

但是我仍然在努力排除包含后代img标签的链接以及如何将其添加到上面的查询中。

这应该是你想要的:

//div[@data-test="cond1" and not(.//img[@class="cond3"])]
/a[@class="cond2"]
/@href
/product/1234

最新更新