我尝试根据以下三个条件提取所有链接:
- 必须是
<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