2012-01-30 42 views
3

我知道我可以完全下載維基百科。但我想知道是否有任何方法可以按類別下載它?他們有Special Export頁面,但是編寫一個類別(例如Culture)添加了兒童頁面和另外一些類別,因此試圖獲取Culture中的所有頁面將會「永遠」,因爲當您提交另一個文化類別時,向上。你們知道有其他方式可以按類別出口嗎? (以一種簡單的方式)按類別導出維基百科選項?

+0

你可能會想嘗試這個PHP腳本:https://github.com/produnis/myscripts/blob/master/PHP/mwc2pdf.php – Produnis 2015-03-16 20:41:42

回答

3

我不認爲有任何其他簡單的方法來做到這一點。

我覺得你最好的選擇是下載所有文章的轉儲文件(pages-articles,目前7.5 GB的英文維基百科)和按類別,篩選他們可能使用類成員轉儲(categorylinks,1 GB)。

另一個選擇是做類似於你將要做的事使用特殊:手動導出,但使用the API自動執行它。

+0

謝謝你的偉大答案:)我會盡力這樣做 – Andrew 2012-01-30 14:34:31

+0

@Andrew how你解決了你的問題嗎?我需要做類似的事情。我想以遞歸方式獲取History Category中的所有頁面,例如https://petscan.wmflabs.org/,但使用mysql轉儲 – diugalde 2016-10-22 21:51:05

4

使用MediaWiki API,您可以通過使用list=categorymembers作爲generatorprop=revisions查詢得到一個類別中的所有頁面的wikitext的,就像這樣:

http://en.wikipedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:Culture&gcmnamespace=0&prop=revisions&rvprop=content

這個例子鏈接給維基百科的Category:Culture前10條的內容。您可以添加gcmlimit=max參數以獲取更多頁面,但對於大型類別,您需要正確處理query continuations(或使用可爲您處理它們的MediaWiki API client)。

(然而,這個查詢將不會顯示在子類分類的頁:文化如果你想這些呢,你可以使用一個簡單的查詢categorymembers沒有在一個類別頁面和子類別列表cmnamespace並通過搜索結果收集文章標題的出口列表,如果你這樣做,小心不要被任何類別循環夾住,並且最好在出口頁面之前對結果進行一次健全性檢查,這很容易得到的方式更多的頁面比你預期從一個完整的子類別遍歷。)

+0

我已經下載了Wikipedia頁面,類別和類別鏈接。我現在把它們全部放在數據庫中。 :) – Andrew 2012-02-03 16:31:14