3

我正在尝试使用 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 中做到这一点?我尝试像这样使用 (or) 、 (|) 、 (and) 运算符

//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"];
        }
    }


}
4

2 回答 2

3

使用

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

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

//ul[@id='week_slider']//div[@id='week_program_img']/descendant-or-self::*[img]
于 2013-03-26T02:15:27.060 回答
0

聚会迟到了,但这是另一种方式:

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

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

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

//descendant::img[1]
于 2017-03-07T15:19:37.350 回答