2014-03-27 22 views
1

我一直在嘗試創建一個英文維基百科的本地Mediawiki實例,以便我可以對Mediawiki API進行大量沉重而耗時的調用(例如遍歷所有頁面並獲取它們的類別和內部鏈接)如何閱讀維基百科轉儲文件,與我如何通過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

要使用API​​,您需要在導入的數據庫中運行MediaWiki。

有一些解析原始轉儲的工具,但它們需要單獨編碼。這不是很複雜,但它是分開的。

對於Python,請參閱Parsing a Wikipedia dump

還有一個很好的Perl庫:https://metacpan.org/pod/MediaWiki::DumpFile

維基媒體關心轉儲的可用性,所以如果您在導入轉儲時遇到問題,您應該在MediaWiki郵件列表中詢問:https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

相關問題