【问题标题】:How to get valid image data from HTML in Objective C如何在Objective C中从HTML中获取有效的图像数据
【发布时间】:2012-06-09 17:32:24
【问题描述】:

这是我试图从中检索图像的 HTML 部分。

div class="image">
              <a href="http://www.web.com/EN/105/News/10228/"><img src="/images/cache/360x295/crop/images%7Ccms-image-000007796.jpg" width="360" height="295" alt=" (photo: )" /></a>
                         </div>

我可以分别获取“href”和“img src”值,但它们都不是可以让我访问图像的链接。有效链接是 http://www.web.com 加上 img src 值。我想将字符串:http://www.web.com 附加到 img src 但不知道该怎么做,也不确定这是正确的方法。所以,我想要得到的是http://www.web.com/images/cache/360x295/crop/images%7Ccms-image-000007796.jpg

这是我用来解析 HTML 数据的代码:

-(void) fethchData

{
    NSError *error = nil;
    NSURL *url=[[NSURL alloc] initWithString:@"http://www.web.com/"];
    NSString *strin=[[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

    HTMLParser *parser = [[HTMLParser alloc] initWithString:strin error:&error];

    if (error) {
        NSLog(@"Error: %@", error);
        return;
    }

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];
            HTMLNode *imNode = [imgNode firstChild];
             NSURL* imageURL = [NSURL URLWithString:[imNode getAttributeNamed:@"src"] relativeToURL:url];
        NSLog(@"%@", imageURL);

        } 
    }



}

这是输出:/images/cache/360x295/crop/images%7Ccms-image-000007653.jpg -- http://www.web.ge/

我需要先看http://www.web.ge/,然后再看其他人。

【问题讨论】:

    标签: objective-c image parsing


    【解决方案1】:

    用途:

    NSURL* imageURL = [NSURL URLWithString:[imNode getAttributeNamed:@"src"] relativeToURL:theURLFromWhichYouDownloadedThisHTML];
    

    更新:如果你觉得你必须有一个绝对 URL 对象,你可以按照上面的:

    imageURL = [imageURL absoluteURL];
    

    【讨论】:

    • 它有效,但我首先看到 src 值,然后是基本 url。我需要反过来。谢谢。
    • /images/cache/360x295/crop/images%7Ccms-image-000007653.jpg -- website.com我首先需要website.com
    • 请编辑问题以显示新代码,并将两个参数记录到+URLWithString:relativeToURL: 和结果。
    • 好的,我知道它在做什么了。这就是NSURL 在它是一个相对 URL 时描述自己的方式。只需询问它的absoluteURL
    • (您也可以直接使用 URL,如果您要下载它等。它是您想要的图像的有效、完整 URL。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2013-10-02
    • 2010-10-30
    • 2011-05-01
    • 2013-03-23
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多