背景
假设我想从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,但我可以选择。
答案 0 :(得分:1)
2005年左右,我编写了一些Python代码,将MW XML转换为Dict,不确定它是否仍然可用,但可以用来检查你是否喜欢Python:wik2dict。
去年我编写了一些CoffeeScript代码,将XML转储转换为Meteor应用程序(最后是Phonegap应用程序)。 mediawikixml2meteor2phonegap。这个因为它的大小而在英语维基百科上失败了,但它适用于Hitchwiki这样的小维基。
这两个项目都远非完美,但它们能够处理大多数情况。