我正在尝试从此html数据中检索图像:
<div class="image">
<a href="http://www.website.com/en/105/News/10217/">
<img src="/images/cache/105x110/crop/images%7Ccms-image-000005554.gif"
width="105" height="110" alt="kollsge (photo: author)" />
</a>
</div>
这是我的代码:
HTMLNode *bodyNode = [parser body];
NSArray *imageNodes = [bodyNode findChildTags:@"div"];
for (HTMLNode *imageNode in imageNodes) {
if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) {
NSLog(@"%@", [imageNode getAttributeNamed:@"img src"]);
}
}
帮助将不胜感激。
我通过以下代码解决了它:
for (HTMLNode *imageNode in imageNodes) {
if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) {
HTMLNode *aNode = [imageNode firstChild];
HTMLNode *imgNode = [aNode nextSibling];
HTMLNode *imNode = [imgNode firstChild];
NSLog(@"%@", [imNode getAttributeNamed:@"src"]);
}
}
您没有正确浏览树。 您正在尝试在 div 上查找名为 img src 的属性。 那看起来像这样:
<div class="image" img src="whatever">
首先,这不是有效的HTML,但更重要的问题是你想看孩子。 您要查找的内容嵌套在div 中,而不是属性中。 由于您的div 只有一个孩子,快速浏览一下您在评论中提供的项目让我相信以下内容会起作用:
HTMLNode *bodyNode = [parser body];
NSArray *imageNodes = [bodyNode findChildTags:@"div"];
for (HTMLNode *imageNode in imageNodes) {
if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) {
HTMLNode *aNode = [imageNode firstChild];
HTMLNode *imgNode = [aNode nextSibling];
NSLog(@"%@", [imgNode getAttributeNamed:@"src"]);
}
}