2011-07-14 80 views
0

我使用此代碼以檢索飼料的第一個圖像... 的htmlString包含HTML標記,並在相同的情況下,我能得到正確的第一形象,但在其他情況下,得到零的NSString。我不明白爲什麼。我敢肯定htmlString包含一個圖像。例如,對於這個字符串,我不能正確地得到第一張圖像。問題與NSScanner!獲取的img標籤的網址!

例子: CultofMac報道可用性的Mac App Store中專門針對OS X 10.7獅子開發的第一個應用程序。在這樣的情況下,過去在其之前的幾個小時內推出的新產品,只是覺得的iOS 4.2.1的發佈iPhone和iPad,已經統一編號,這些設備的系統版本的固件第一的。 OS X Lion中更接近釋放? </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>只有前幾天蘋果....

,我需要排隊的部分是:<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

什麼是錯在我的代碼?

您正在使用的解析器來解析HTML掃描。

HTML解析是非常非常難;所有的XML解析器具有普遍缺乏一致性的組合的問題。

幸運的是,HTML解析也非常多,一個解決的問題。

使用適當的HTML解析器。 libxml2的有一個HTML兼容模式。

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

+0

您可以發佈我一個例子嗎?謝謝 –