2

背景

假设我想从 MediaWiki 中提取所有页面/修订的解析内容文本。让我们考虑一下庞大的英文维基百科。

我可以通过下载所需的数据、设置我自己的 MediaWiki 安装并运行一个循环来调用类似的东西来做到这一点:

http://localhost/mediawiki/api.php?uselang=en&format=xml&action=query&prop=extracts&exintro=&explaintext=&titles=

这使用了 TextExtracts ( https://github.com/wikimedia/mediawiki-extensions-TextExtracts ) 扩展,它在内部实际上做了类似的事情:

http://localhost/mediawiki/api.php?uselang=en&format=xml&action=parse&prop=text&title=

问题

现在,我不想将 MediaWiki 安装与 MySQL 数据库等一起使用。但我想使用 MediaWiki XML 数据转储(巨大的英语维基百科 XML 转储 - enwiki-latest-pages-articles.xml.bz2)来完成我所描述的操作。关于如何解决这个问题的任何想法?

看起来所有调用的解析逻辑WikiPage->getContent和很多都在 MediaWiki PHP 类中——它们耦合太紧密了,我无法将它们取出(除非我想花数周时间在上面)并编写我自己的脚本来处理转储. 是否有任何脚本可以让我这样做?我的首选语言是 Java,但我愿意选择。

4

1 回答 1

1

大约在 2005 年,我编写了一些 Python 代码将 MW XML 转换为 Dict,不确定它是否仍然有效,但可能有助于检查您是否喜欢 Python:wik2dict

去年,我编写了一些 CoffeeScript 代码来将 XML 转储转换为 Meteor 应用程序(最后是 Phonegap 应用程序)。mediawikixml2meteor2phonegap。由于它的大小,这个在英文维基百科上失败了,但在Hitchwiki等较小的 wiki 上运行良好。

这两个项目都远非完美,但它们能够处理大多数情况。

于 2014-06-16T11:51:53.273 回答