2010-09-22 81 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