我如何阅读Wikipedia转储文件,类似于我如何通过Mediawiki API获取信息?

时间:2014-03-27 23:21:53

标签: api parsing wikipedia wikipedia-api

我一直在尝试创建英语维基百科的本地Mediawiki实例,以便我可以对Mediawiki API进行大量繁重而耗时的调用(例如,遍历所有页面并获取其类别和内部链接)

到目前为止它还没有解决,转储的SQL导入完成或中间进程后总是存在一些问题,所以我现在放弃了这个问题,但我正在研究另一个解决方案。

所以说我想浏览特定类别中的所有页面并获取每个页面的内部链接(它链接到的其他维基百科页面),在mwclient中很容易:

import mwclient
site = mwclient.Site('en.wikipedia.org')

def getPages(c, p):
    for page in c:
        if page.namespace == 0:
            p.append(page)
        elif page.namespace == 14:
            getPages(page, p)
        else:
            pass

pages = []
c1 = site.Pages["Category:Mathematics"]
getPages(c1, pages)

但它需要我有一个正在运行的维基百科副本,所以我想知道是否有一个类似的简单解决方案可以针对转储(XML,SQL,DBPedia或其他转储形式)执行,而不是与Mediawiki实例通信?

1 个答案:

答案 0 :(得分:1)

要使用API​​,您需要将MediaWiki与导入的数据库一起运行。

有解析原始转储的工具,但它们需要单独编码。它不是很复杂,但它是分开的。

对于Python,请参阅问题Parsing a Wikipedia dump

Perl中还有一个很好的库:https://metacpan.org/pod/MediaWiki::DumpFile

维基人员关注转储的可用性,因此如果您在导入转储时遇到问题,您应该在MediaWiki邮件列表中询问:https://lists.wikimedia.org/mailman/listinfo/mediawiki-l