NSScanner出现问题!获取img标签的网址!

时间:2011-07-14 22:08:11

标签: iphone objective-c nsscanner

我使用此代码来检索Feed的第一张图片... htmlString包含html标签,在相同的情况下,我可以正确获得第一个图像,但在其他情况下,我得到一个零NSString。我不明白为什么。我确定htmlString包含一个图像。例如,对于这个字符串,我无法正确获得第一个图像。

实施例: CultOfMac ha segnalatoladisponibilitàsulMac App Store delle prime applicazioni sviluppate appositamente per OS X 10.7 Lion。在passato situazioni来到questa hanno preceduto di qualche ora il lancio di nuovi prodotti,basti pensare al rilascio di iOS 4.2.1 per iPhone e iPad,primo firmware che ha unificato la numerazione delle versioni di sistema di questi dispositivi。 OS XLionèpiùvicinoal rilascio?</p> <p><img class="aligncenter size-full wp-image-21789" title="mac-app-store_t" src="http://static.slidetomac.com/wp-content/uploads/2011/07/mac-app-store_t.jpg" alt="" width="507" height="300" /></p> <p><span id="more-21780"></span></p> <p> Solo qualche giorno fa Apple ....

我需要的代码部分是:<img class="aligncenter size-full wp-image-21789" title="mac-app-store_t" src="http://static.slidetomac.com/wp-content/uploads/2011/07/mac-app-store_t.jpg" alt="" width="507" height="300" /

但我无法正确查看图片的网址...... 我的代码有什么问题? 感谢

- (NSString *)getFirstImage:(NSString *)htmlString{



    NSString *urlImage=nil;
    NSScanner *theScanner = [NSScanner scannerWithString:htmlString];
    // find start of IMG tag
    [theScanner scanUpToString:@"<img" intoString:nil];
    do {
        [theScanner scanUpToString:@"src" intoString:nil];
        NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"\"'"];
        [theScanner scanUpToCharactersFromSet:charset intoString:nil];
        [theScanner scanCharactersFromSet:charset intoString:nil];
        [theScanner scanUpToCharactersFromSet:charset intoString:&urlImage];

        if([urlImage rangeOfString:@"imagebutton.gif"].location == NSNotFound) return urlImage;


    }while (![theScanner isAtEnd]  );


    if([theScanner isAtEnd]) return nil;
     return urlImage;
}

1 个答案:

答案 0 :(得分:1)

  

我的代码出了什么问题?

您正在使用扫描解析器来解析HTML。

HTML解析非常困难; XML解析器的所有问题与普遍缺乏一致性相结合。

幸运的是,HTML解析也是一个非常解决的问题。

使用正确的HTML Parser。 libxml2具有HTML兼容模式。

There are a slew of question/answers on SO about HTML parsing.