2017-03-23 112 views
0

我只想獲取有關視頻遊戲的數據(如Duke Nukem 3D,Atari遊戲等)。但看看他們如何期待你的問題以及別人怎麼做,我不能完全理解如何去做。現在我已經搜索了幾天,但如何做到這一點,卻空手而歸。如何從維基百科獲取特定數據?

我也看過他們的API,但他們希望你如何創建一個查詢字符串並沒有真正幫助我。我試着這樣做:

https://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&titles=Video_Game 

但它給了我這樣的回報:

{ 
    "batchcomplete":"", 
    "query":{ 
     "normalized":[ 
     { 
      "from":"Video_Game", 
      "to":"Video Game" 
     } 
     ], 
     "pages":{ 
     "361741":{ 
      "pageid":361741, 
      "ns":0, 
      "title":"Video Game", 
      "categories":[ 
       { 
        "ns":14, 
        "title":"Category:Redirects from other capitalisations" 
       }, 
       { 
        "ns":14, 
        "title":"Category:Unprintworthy redirects" 
       } 
      ] 
     } 
     } 
    } 
} 

我懷疑這只是找到了我什麼視頻遊戲,但網頁並非是關於視頻的所有網頁遊戲。我可能只是不明白如何從維基百科獲取數據。

任何幫助?

回答

1

在英文維基百科的所有頁面有關視頻遊戲包含的模板被稱爲Infobox video game,所以你只需要使用Wikipedia API查詢財產transcludedin讓所有的人:

https://en.wikipedia.org/w/api.php?action=query&prop=transcludedin&tilimit=500&titles=Template:Infobox_video_game 
+0

Oooh模板。就是那個。好的。謝謝,這確實解釋得更好! – OmniOwl

0

一方面,Video GameredirectVideo game (維基百科中的首字母大寫,除了標題的第一個字符外),所以它沒有太多有用的信息。您可以使用redirects=1 API參數自動解析重定向。

另一個問題是,你問的API是什麼類別的視頻遊戲文章是在什麼你可能想要的是問什麼文章是在視頻遊戲類別。這就像action=query&list=categorymembers&cmtitle=Category%3AVideo+games

第三個問題是類別形成圖表,所以通常大多數相關內容都在子類別中,而不是主類別本身。 Category:Video games也是如此。因此,即使您正確檢索了文章列表,它也不會特別有用。

有多種方式可以獲得更有用的相關文章列表。

  • 您可以基於信息框包含進行查詢,如Termininja所說。問題在於它會遺漏沒有信息框的文章(通常是較新的,寫得不好的文章)。
  • 您可以使用實驗性的獨立版category graph search service來查找視頻遊戲類別和子類別中的所有文章。在實踐中,對於非常普通的類別(比如「視頻遊戲」)來說,這會非常危險,因爲類別系統很混亂 - 它不是一個合適的樹,它包含循環和其他奇怪的東西,所以你可能會發現,當深入到子類別的內容甚至不與視頻遊戲有關。 (例如電子遊戲>電子遊戲文化>書呆子文化>動漫和漫畫迷)
  • 您可以使用SPARQL查詢Wikidata,如is a: video game。這取決於正確維護的維基數據信息,但情況並非總是如此。

在這種情況下,您可能最好使用信息框。

+0

我試圖按照Termininja的說法,然後編寫了一個程序遞歸地遍歷所有「繼續」的細分,直到我把它們全部都完成了。我最終以22029條目結束,然後使用另一個查詢來查找使用它們的標題的每個條目的Wiki Base Item ID。現在我擁有所有的唯一標識符,並且需要使用這些標識符來獲取所有文章信息。 – OmniOwl

+0

@Vipar,你可以用你的第一個查詢獲得所有的Wikidata ID:https://en.wikipedia.org/w/api.php?action=query&generator=transcludedin&prop=pageprops&titles=Template:Infobox_video_game&ppprop=wikibase_item>ilimit=500通過使用生成器。 – Termininja

+0

@Termininja是的,我試圖理解整個發生器的交易,但我無法做到這一點,所以我放棄了 – OmniOwl