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