刮擦和解析维基百科页面

Jor*_*eña 5 parsing wikipedia screen-scraping objective-c wikipedia-api

我想知道在Objective-C中是否存在任何现有库或者可以从Objective-C访问哪些库,这样我就可以抓取像这样格式化的页面.具体而言,所有日期和每个日期旁边的所有文本.如果没有,那么最好的方法是什么?常用表达?我听说NSString可能已经有了内置的方法.这是真的?

我在四处寻找是否有任何替代方法,例如XML文件或API.我找到了一个API,但我看到的唯一客户端是其他语言,他们似乎只能将内容发布到页面而不是检索它.

编辑:所以我在这些链接上找到了有关API的更多信息:

我能够提出这个请求,返回一些HTML编码的文本(格式是XML,但它包括页面的文本»a href=等等.我将继续查看文档,看看我是否可以使这个文件出来好一点,如果没有,是否有解析这个的建议?

编辑2:好的,所以感谢这个doc页面,我能够检索数据的最简单,最简洁的方法是使用这个构造的链接返回相关部分的原始数据(在wiki标记中).但是,我想我需要解析它,但如果确实如此,它应该比整篇文章容易得多.

有没有人对解析wiki标记有任何建议,例如Objective-C中的以下内容?

==Events==
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.
Run Code Online (Sandbox Code Playgroud)

我最终想要的是,我想一个NSDictionary或类似的集合将存储日期与附带的信息片段.谢谢!

Ken*_*ner 1

我将建议使用正则表达式在混合 HTML 数据流中进行目标数据提取。

手机上已经有 RegEx 库,但它们有点隐藏 - 您可以使用RegexKitLite通过一些简单的调用来公开它们 (确保向下滚动并获取精简版本)。它最终成为一个在 NSString 上有一些扩展的类,可以让您执行正则表达式,然后您可以定义一个包含两个捕获的匹配项的正则表达式 - 一个用于数字,一个用于内容,以及一些未捕获的匹配项封闭标签和中间标签。尽管它是标准 RegEX 的“精简”版本,但它仍然支持您需要的几乎任何功能。

API 方法很有前途,但一旦获得原始标记,您可能必须采用类似的正则表达式方法来解析其中的数据。如果它降低了正则表达式的复杂性和数据传输时间,它仍然可能有意义,但没有理由不能结合这两种方法。