从MediaWiki XML转储中提取文本而不安装/ API

时间:2014-05-25 12:54:19

标签: php xml mediawiki mediawiki-api mediawiki-extensions

背景

假设我想从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,但我可以选择。

1 个答案:

答案 0 :(得分:1)

2005年左右,我编写了一些Python代码,将MW XML转换为Dict,不确定它是否仍然可用,但可以用来检查你是否喜欢Python:wik2dict

去年我编写了一些CoffeeScript代码,将XML转储转换为Meteor应用程序(最后是Phonegap应用程序)。 mediawikixml2meteor2phonegap。这个因为它的大小而在英语维基百科上失败了,但它适用于Hitchwiki这样的小维基。

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