gpt4 book ai didi

html - 如何指定 xpath 以从有条件的 parent 和 child 那里获取数据?

转载 作者:行者123 更新时间:2023-12-03 17:36:04 25 4
gpt4 key购买 nike

我想提取图像的链接,但前提是该图片的名称中不包含“thumb”一词。

<a title="" rev="http://insales.ru/images/ large.jpeg"  href="http://insales.ru/images/T001.jpeg" class="TestClass">
<img src="http://insales.ru/images/thumb.jpeg" class="productimage">
</a>

所以我想从 <img> 中提取“ http://insales.ru/images/thumb.jpeg”行如果只有图片名称没有“拇指”关键字,则标记。

我正在尝试这样做:
//a[@class='TestClass']//img[not(contains(@src, 'thumb'))]

不工作。因为我正在丢失来自 <a> 的数据现在。

有时我会直接从 <a> 中提取链接。标签。从 rev 或 href。但有时来自 <img> <a> 的 child .

如何指定允许从父级或其子级提取链接的 xpath。但是 child 是有条件的。

详情:

我正在解析来自在线商店的数据。具体来说,我正在尝试获取产品的图像。我提供的代码代表产品的一张图片。我只需要大版本的图片。不是小缩略图。问题是有时链接到 <a> 的 rev 属性中显示的大图标签。有时它会出现在 <img> 的 src 属性中。标签。

案例 1(我需要在 <a> 标签和 rev 属性 中提供链接
    <li class='product-item'>
<a title="" rev="http://insales.ru/images/ large.jpeg" href="http://insales.ru/images/T001.jpeg" class="MagicThumb-swap">
<img src="http://insales.ru/images/thumb_T001" class="productimage" title=" Tissot">
</a>
</li>

在那种情况下,我需要提取 http://insales.ru/images/large.jpeg 线。我不需要 http://insales.ru/images/thumb_T001那是在 <img>标签。

案例 2(我需要在 <img> 标签和 src 属性中提供链接)
<div class='item'>
<a title="" id="Zoomer" class="MagicZoomPlus jqzoom modal" href="http:// insales.ru/images/thumbi14.jpg" >
<img src="http://insales.ru/images/large_i14.jpg" title="Orient” class="productimage">
</a>
</div>

在第二种情况下,我需要提取 http://insales.ru/images/large_i14.jpg 线。而且我不需要位于 <a> 中的 http://insales.ru/images/thumbi14.jpg标签。

我知道如何在这两种情况下提取链接。但我不知道如何制作通用 xpath 以允许在两种情况下获取大图片的链接。那就是为什么我要根据链接中的图片名称来创建条件。如果链接中有“拇指”关键字,我会尝试将其过滤掉。

最佳答案

如果我现在理解正确的话,正确的路径表达式是

//a/@rev[not(contains(.,'thumb'))] | //img/@src[not(contains(.,'thumb'))]

在哪里 | union operator它结合了节点集。

假设输入文档如
<html>
<li class='product-item'>
<a title="" rev="http://insales.ru/images/ large.jpeg" href="http://insales.ru/images/T001.jpeg" class="MagicThumb-swap">
<img src="http://insales.ru/images/thumb_T001" class="productimage" title=" Tissot"/>
</a>
</li>
<div class='item'>
<a title="" id="Zoomer" class="MagicZoomPlus jqzoom modal" href="http:// insales.ru/images/thumbi14.jpg" >
<img src="http://insales.ru/images/large_i14.jpg" title="Orient" class="productimage"/>
</a>
</div>
</html>

结果将是(由 ----------- 分隔的各个结果):
rev="http://insales.ru/images/ large.jpeg"
-----------------------
src="http://insales.ru/images/large_i14.jpg"

如果您需要包含 class a 的属性:
//a[@class='TestClass']/@rev[not(contains(.,'thumb'))] | //a[@class='TestClass']/img/@src[not(contains(.,'thumb'))]

但是,您在“详细”描述中没有提到这一点。

关于html - 如何指定 xpath 以从有条件的 parent 和 child 那里获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com