2011-07-07 64 views
1

我希望能夠從http://en.wikipedia.org/wiki/Special:Export下載幾千條的充分的歷史和我正在尋找一個綱領性的方法來自動執行它
我開始在Python以下但沒有得到任何有用的結果有沒有辦法使用special:自動下載wikipedia文章?

query = "http://en.wikipedia.org/w/index.api?title=Special:Export&pages=%s&history=1&action=submit" % 'Page_title_here' 
f = urllib.urlopen(query) 
s = f.read() 

有什麼建議嗎?

+0

最壞的情況,你可以下載所有的歷史在這裏:http://download.wikimedia.org/enwiki/20100130/enwiki-20100130-pages-meta-history.xml.bz2(或http: //thepiratebay.org/torrent/6430796爲torrent) –

+0

該文件將會變得多大? – hopeful

+0

280GB,提取到5TB。但很快發佈一個Python解決方案。 –

回答

1

刪除您想要下載的頁面列表pages陣列,這應該工作。運行該腳本,它將打印XML文件。請注意,維基百科似乎阻止了urllib用戶代理,但我沒有在頁面上看到任何暗示自動下載不被允許的內容。使用風險自負。

您還可以將'curonly':1添加到字典中以僅提取當前版本。

#!/usr/bin/python 
import urllib 

class AppURLopener(urllib.FancyURLopener): 
    version = "WikiDownloader" 
urllib._urlopener = AppURLopener() 

query = "http://en.wikipedia.org/w/index.php?title=Special:Export&action=submit" 
pages = ['Canada'] 
data = { 'catname':'', 'wpDownload':1, 'pages':"\n".join(pages)} 
data = urllib.urlencode(data) 
f = urllib.urlopen(query, data) 
s = f.read() 
print(s) 
+0

查看[元維基](http://meta.wikimedia.org/wiki/User-Agent_policy)獲取用戶代理策略。 –

+0

太棒了!謝謝:)顯然,上面指定的用戶代理應根據此策略進行更新。 –

+0

非常感謝邁克爾。它的工作原理:) – hopeful

相關問題