首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指定xpath从具有条件的父级和子级获取数据?

如何指定xpath从具有条件的父级和子级获取数据?
EN

Stack Overflow用户
提问于 2015-04-28 08:37:45
回答 1查看 214关注 0票数 1

我想提取一个图像的链接,但只有当这张图片不包含词“拇指”在其名称。

代码语言:javascript
复制
<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>

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

我正试着这样做:

代码语言:javascript
复制
//a[@class='TestClass']//img[not(contains(@src, 'thumb'))]

不起作用。因为我现在正在从<a>中丢失数据。

有时,我直接从<a>标签中提取链接。从rev还是href。但有时来自<img><a>的孩子。

如何指定允许从父或其子节点提取链接的xpath。但对孩子来说是有条件的。

详细信息:

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

案例1(我需要在标记和rev属性中显示链接)

代码语言:javascript
复制
    <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线。我不需要T001,它在<img>标签中。

<img> 案例2(标记和src属性中显示的链接)

代码语言:javascript
复制
<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行。我也不需要<a>标签中的http:// insales.ru/images/umbi14.jpg。

我知道如何在这两种情况下提取链接。但我不知道如何制作通用xpath,以便在这两种情况下都可以获得大图片的链接。这就是为什么我试图根据链接中的图片名称来创建一个条件。如果有一个‘拇指’关键字在链接im试图过滤掉它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-28 10:46:33

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

代码语言:javascript
复制
//a/@rev[not(contains(.,'thumb'))] | //img/@src[not(contains(.,'thumb'))]

其中|是组合节点集的 operator

假设输入文档如下

代码语言:javascript
复制
<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>

结果将是(由-----------分隔的单个结果):

代码语言:javascript
复制
rev="http://insales.ru/images/ large.jpeg"
-----------------------
src="http://insales.ru/images/large_i14.jpg"

如果您需要包含aa属性

代码语言:javascript
复制
//a[@class='TestClass']/@rev[not(contains(.,'thumb'))] | //a[@class='TestClass']/img/@src[not(contains(.,'thumb'))]

然而,你并没有在你的“详细”描述中提到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29914388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档