用xpath获取所有图像

时间:2013-03-26 00:20:52

标签: xpath

我正在尝试使用Hpple和xpath从HTML列表中获取所有图像,但没有任何好处

我的HTML节点就像这些

<ul id="week_slider">
      <div id="week_program_img">
            <img id="Img1" src="imageurl">    
      </div>
</ul>

但有些时候(img)标签在(a)标签内(

<a href="url">
       <img id="Img1" src="imageurl"> 
</a>

当把这条路径放在xpath中时,我只能获得图像(不在'a'标签中)

//ul[@id='week_slider']//div[@id='week_program_img']

在将此路径放入xpath

时,我也可以获取图像(在'a'标签中)
//ul[@id='week_slider']//div[@id='week_program_img']/a

但是我希望在有或没有标签的同时获得所有图像 我怎么能在同一个xpath中做到这一点? 我尝试使用(或),(|),(和)这样的运算符

//ul[@id='week_slider']//div[@id='week_program_img'] | //ul[@id='week_slider']//div[@id='week_program_img']/a 

但它运作不正常

我的完整代码:

  

NSString * tutorialsXpathQueryStringimage1 =   @ “// UL [@ ID = 'week_slider'] // DIV [@ ID = 'week_program_img']”;

NSArray *newsNodesimage1 = [newsParser searchWithXPathQuery:tutorialsXpathQueryStringimage1];




NSMutableArray *image1 = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in newsNodesimage1) {



    Tutorial *tutorial = [[Tutorial alloc] init];
    [image1 addObject:tutorial];

    for (TFHppleElement *child in element.children) {
        if ([child.tagName isEqualToString:@"img"]) {

            tutorial.imageUrl = [child objectForKey:@"src"];
        }
    }


}

2 个答案:

答案 0 :(得分:2)

使用

//ul[@id='week_slider']//div[@id='week_program_img']//img

或者如果您想要选择每个此类图像的父级(基于提供的XPath表达式的情况),请使用

//ul[@id='week_slider']//div[@id='week_program_img']/descendant-or-self::*[img]

答案 1 :(得分:0)

晚会但这是另一种方式:

//ul[@id='week_slider']//descendant::img

好处是后代选择当前节点的所有后代(子,孙等)。在这种情况下,div中存在id='week_slider的所有图片。

您还可以按索引选择图像,即

//descendant::img[1]