【问题标题】:get all images with xpath使用 xpath 获取所有图像
【发布时间】:2013-03-26 00:20:51
【问题描述】:

我正在尝试使用 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"];
        }
    }


}

【问题讨论】:

  • //ul[@id='week_slider']//div[@id='week_program_img']//img ?
  • //img/@src 怎么样?
  • 感谢回复,我尝试了 //img 和 //img/@src 都没有得到任何图像!
  • 你使用 firebug fireXpath 插件吗?使用//img/@src,我在当前页面上发现了许多图像。你呢?
  • 不,我不使用它,但我刚刚安装它,我可以用 fireXpath 做什么?

标签: xpath


【解决方案1】:

使用

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

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

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

【讨论】:

  • 不错 :) 第二条路径很棒,并获取所有图像。非常感谢 Dimitre
【解决方案2】:

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

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

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

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

//descendant::img[1]

【讨论】:

  • 为什么每个人都在示例中使用 // ?我使用它,它隐藏了像 php 中的文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 2020-06-20
  • 2019-08-15
相关资源
最近更新 更多