在 Objective-C 中解析来自 HTML 的图片



我正在尝试从此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"]);
    } 
}

最新更新