从MediaWiki XML转储中提取文本,无需安装/API


Extract text from MediaWiki XML dump without installation/API

背景

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

我可以通过下载所需的数据,设置我自己的MediaWiki安装,并运行一个循环来调用以下内容来实现这一点:

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

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

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

问题

现在,我不想使用带有MySQL数据库的MediaWiki安装等等。但我想使用MediaWiki XML数据转储(巨大的英文维基百科XML转储-ewiki最新页面articles.XML.bz2(来做我所描述的事情。有什么想法可以解决这个问题吗?

看起来所有调用WikiPage->getContent等的解析逻辑都在MediaWiki PHP类中——它们耦合得太紧密了,我无法将它们取出(除非我想花几个星期的时间(并编写自己的脚本来处理转储。有什么脚本可以让我这么做吗?我的首选语言是Java,但我对各种选择持开放态度。

2005年前后,我编写了一些Python代码,将MW XML转换为Dict,不确定它是否仍然有效,但可以用来检查您是否喜欢Python:wik2ict。

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

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