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

时间:2015-04-28 08:37:46

标签: html xpath

我想提取图像的链接,但仅在这个图片不包含单词" thumb"在它的名字。 < a title ="" rev =" http://insales.ru/images/ large.jpeg" HREF =" HTTP://insales.ru/images/T001.jpeg"类="识别TestClass">     < img src =" http://insales.ru/images/thumb.jpeg"类=" productimage"> < / A> 所以我想提取" http://insales.ru/images/thumb.jpeg"来自< img>的行标签,如果只有图片名称没有"拇指"关键词。 我想这样做: // a [@class =' TestClass'] // img [not(contains(@src,' thumb'))] 不工作。因为我正在从< a>中丢失数据现在。 有时我会直接从< a>中提取链接。标签。来自rev或href。但有时来自< img> < a>的孩子。 如何指定允许从父项或其子项中提取链接的xpath。但是孩子有一个条件。 详情如下: 我正在从在线商店解析数据。具体而言,我正在尝试获取产品的图像。我提供的代码代表产品的一个图像。我只需要大版本的图片。不小的缩略图。问题是有时会链接到< 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"类=" MagicThumb交换">           < img src =" http://insales.ru/images/thumb_T001"类=" productimage"标题="天梭">       < / A>     < /锂> 在这种情况下,我需要提取http://insales.ru/images/large.jpeg行。我不需要< img>中的http://insales.ru/images/thumb_T001标签。 案例2(链接我需要在< img>标签和src属性中提供) < div class =' item'>       < a title ="" ID ="缩放器" class =" MagicZoomPlus jqzoom模态" 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,允许在两种情况下获得大图片的链接。 Thata为什么我试图根据链接中的图片名称制作条件。如果有一个拇指'链接中的关键字我试图将其过滤掉。

1 个答案:

答案 0 :(得分:2)

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

|

其中<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> 是组合节点集的union operator

假设输入文件如

-----------

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

class

如果您需要包含a的{​​{1}}属性:

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

但是,您没有在“详细”描述中提及。