2010-09-22 56 views
1

我正在嘗試獲取文章摘要並將其作爲字符串下載。這對一些文章非常有用,但維基百科網站不一致。所以NSScanner經常失敗,而對其他文章工作正常。使用NSScanner獲取Wikipedia文章摘要問題

這裏是我的NSScanner實現:

NSString *separatorString = @"<table id=\"toc\" class=\"toc\">";         
NSScanner *aScanner = nil; 
NSString *container = nil; 
NSString *muString = [NSString stringWithString:@"</table>"]; 

aScanner = [NSScanner scannerWithString:string]; 
[aScanner setScanLocation:0];             
[aScanner scanUpToString:muString intoString:nil];   
[aScanner scanString:muString intoString:nil];  

[aScanner scanUpToString:separatorString intoString:&container]; 

這怎麼可能得到改善?或者有另外一種方法來解決這個問題?

形象化的文章中,我想的這一點,這裏有一個例子:

http://en.wikipedia.org/wiki/Indigo

從這個我想一切從「靛藍是在電磁頻譜的顏色」,以「在英語中在1289年「。

謝謝!

回答

1

您可以使用WebKit's DOM API來行走實際結構,而不是盲目地解析文本。

+0

這不是一個好主意,因爲維基頁面太不一致了。 – Pripyat 2010-09-22 19:15:14

+2

首先,它們足夠一致,以至於有六種應用程序可以解析它們並將它們精美地呈現在iPhone和iPad上。其次,如果使用文檔的DOM是一個壞主意,因爲它不一致,那麼使用NSScanner至少是一樣糟糕。無論如何,它們看起來與我一致。 「bodyContent」div中的第一個p元素。我已經點過幾篇文章,他們都遵循這種形式。容易與DOM。 – 2010-09-22 19:22:52

+0

David Schiefer:DOM是檢查這些「不一致」頁面的更可靠的方法。考慮到使用DOM,你可以獲得#toc元素*,無論它存在於何處。你根本不能用NSScanner來做到這一點。 – 2010-09-22 21:09:35