【问题标题】:Convert Wikipedia Page Section to NSString Objective-C将维基百科页面部分转换为 NSString Objective-C
【发布时间】:2011-11-13 01:24:12
【问题描述】:

我正在编写一些将维基百科页面的一部分检索为 NSString 的代码。我在网上找到了一个构造链接,它返回一个部分的原始数据。例如,要获取关于“波士顿”的 Wikipedia 页面的第一部分,您可以访问: http://en.wikipedia.org/w/index.php?title=Boston&action=raw&section=0.

我想要实现的是将原始数据转换为在正常的 Wikipedia 页面上可以看到的内容:http://en.wikipedia.org/wiki/Boston

现在,起初,我想我会使用正则表达式来解析以{{ 开头并以}} 结尾的块。然而,这被证明是有问题的,它删除了必要的文本。

然后,我想我可以找到一个用于 Objective-C 的 wiki 标记到 html 转换器(在网上随处可见),但我没有运气。

关于 SO 有几个类似的问题,但似乎都没有得到明确解决:Getting Wikipedia Article Summary using NSScanner Problem

那么,继续,有谁知道如何将 wiki 页面解析为 NSString?

提前谢谢你。

【问题讨论】:

    标签: objective-c regex nsstring wikipedia


    【解决方案1】:

    使用 PEG WikiText 解析器,例如 kiwi:https://github.com/AboutUs/kiwi

    你可以在这里找到kiwi的解析输出规则:https://github.com/AboutUs/kiwi/blob/master/src/syntax.leg

    您需要下载 peg/leg 来编译 leg 文件:http://piumarta.com/software/peg/

    【讨论】:

    • 这看起来确实很有用,但你知道是否有针对它的 Objective-C 包装器吗?我最初更倾向于使用几个正则表达式,但如果事实证明这很容易实现,我可能会改用它。
    • 我不知道。但是,如果您不想编写(和发布)一个,您总是可以将其构建为命令行工具并通过您的应用程序中的 NSTask 运行它。小菜一碟。将 Wiki 标记为 STDIN,来自 STDOUT 的 HTML。完成。
    • 更新了答案,带有“.leg”文件编译器的链接。 IIRC 在尝试编译 kiwi 之前,您需要通过./configure && sudo make && make install(可能没有./configure && )安装 peg/leg。哦,是的,我成功编译了猕猴桃。就在一周前。 ;)
    • 好的,谢谢,开始构建 :) 哦,最后一个问题:如何将原始 wiki 标记传递给“bin”中的“解析器”?
    • NSTask 是你的朋友。还要检查thisthis
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多