2009-06-08 47 views
59

我試圖找出是否有維基百科API(我認爲它與mediawiki有關?)。如何使用wikipedia API如果存在?

如果是這樣,我想知道我將如何告訴維基百科給我一篇關於紐約洋基的文章。

這個例子的REST網址是什麼?

關於此主題的所有文檔看起來相當複雜。

+5

的「如果存在」部分也是這裏介紹:HTTP:// stackoverflow.com/questions/627594/is-there-a-wikipedia-api。但我認爲「如何使用它」部分是一個合理的問題......有點。 – Jonik 2009-06-08 12:14:38

+0

現在有一個R包可以訪問Mediawiki API(以及維基百科),更多詳細信息和示例:http://stackoverflow.com/a/24027866/1036500 – Ben 2014-06-04 02:06:53

回答

81

你真的需要花一些時間閱讀文檔,因爲這花了我一點時間看看,然後點擊鏈接來解決它。 :/但出於同情我會給你一個鏈接,也許你可以學習使用。

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

這就是variabled你會找得到的。最好的辦法是要知道你將是以後的頁面,並取代維基百科的鏈接部分入題,即:

http://en.wikipedia.org/wiki/New_York_Yankees [維基後把部分/]

- >

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

[把它放在GET請求的標題變量中。

上面的URL可以通過調整來獲得你做或不想做的不同部分。所以請閱讀文檔:)

66

這裏的答案幫助我找到了一個解決方案,但是我發現了更多的信息,可能對其他找到這個問題的人有利。我想大多數人只是想使用API​​來快速從頁面上獲取內容。這裏是我正在做的是:

使用修訂:

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Threadless&rvprop=content&format=json&rvsection=0&rvparse=1 

//Explanation 
//Base Url: 
http://en.wikipedia.org/w/api.php?action=query 

//tell it to get revisions: 
&prop=revisions 

//define page titles separated by pipes. In the example i used t-shirt company threadless 
&titles=whatever|the|title|is 

//specify that we want the page content 
&rvprop=content 

//I want my data in JSON, default is XML 
&format=json 

//lets you choose which section you want. 0 is the first one. 
&rvsection=0 

//tell wikipedia to parse it into html for you 
&rvparse=1 

使用提取物(更好/更容易爲我在做什麼)

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=extracts&titles=Threadless&format=json&exintro=1 

//only explaining new parameters 
//instead of revisions, we'll set prop=extracts 
&prop=extracts 

//if we just want the intro, we can use exintro. Otherwise it shows all sections 
&exintro=1 

所有信息需要通過閱讀所提到的API文檔,但我希望這些示例能夠幫助大多數來這裏快速修復的人員。

8

如果你想提取從維基百科的結構化數據,您可以考慮使用DBpedia的http://dbpedia.org/

它提供的手段來查詢使用利用解析維基百科的信息框模板SPARQL數據返回給定的標準數據

有一些SPARQL庫可用於多種平臺以使查詢更容易

1

Wiki Parser轉換維基百科轉儲到XML。它也很快。然後,您可以使用任何XML處理工具來處理解析的維基百科文章中的數據。

2

下面是一個實用的示例進行打印從維基百科紐約洋基頁的第一句到Web瀏覽器的控制檯:

<!DOCTYPE html> 
</html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    </head> 
    <body> 
     <script> 
      var wikiUrl = "http://en.wikipedia.org/w/api.php?action=opensearch&search=New_York_Yankees&format=json&callback=wikiCallbackFunction"; 

      $.ajax(wikiUrl, { 
       dataType: "jsonp", 
       success: function(wikiResponse) { 
        console.log(wikiResponse[2][0]); 
       } 
      }); 
     </script> 
    </body> 
</html> 

http://en.wikipedia.org/w/api.php爲您的網址端點。您可以通過訪問來了解如何構建您的網址: http://www.mediawiki.org/wiki/API:Main_page

我使用jsonp作爲dataType以允許跨站點請求。更可以在這裏找到: http://www.mediawiki.org/wiki/API:Cross-site_requests

最後但並非最不重要,一定要引用Jquery.ajax()API: http://api.jquery.com/jquery.ajax/