如何读取维基百科转储文件,就像如何通过Mediawiki API获取信息一样?
我一直在尝试创建一个英语维基百科的本地Mediawiki实例,这样我就可以对Mediawiki API进行大量繁重而耗时的调用(例如,迭代所有页面并获取它们的类别和内部链接) 到目前为止还没有解决,在完成转储的SQL导入后或在导入过程中总是会出现一些问题,所以我现在放弃这一点,但正在寻找另一种解决方案 因此,假设我想浏览特定类别中的所有页面,并获取每个页面的内部链接(它链接到的其他维基百科页面),很容易:如何读取维基百科转储文件,就像如何通过Mediawiki API获取信息一样?,api,parsing,wikipedia,wikipedia-api,Api,Parsing,Wikipedia,Wikipedia Api,我一直在尝试创建一个英语维基百科的本地Mediawiki实例,这样我就可以对Mediawiki API进行大量繁重而耗时的调用(例如,迭代所有页面并获取它们的类别和内部链接) 到目前为止还没有解决,在完成转储的SQL导入后或在导入过程中总是会出现一些问题,所以我现在放弃这一点,但正在寻找另一种解决方案 因此,假设我想浏览特定类别中的所有页面,并获取每个页面的内部链接(它链接到的其他维基百科页面),很容易: import mwclient site = mwclient.Site('en.wiki
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实例通信?要使用需要在导入数据库中运行Mediawiki的API 有用于解析原始转储的工具,但它们需要单独编码。这不是很复杂,但它是分开的 关于Python,请参见问题 Perl中还有一个很好的库: Wikimedia关心转储文件的可用性,因此如果导入转储文件时遇到问题,您应该在MediaWiki邮件列表中询问