2014-02-08 107 views
2

我正在嘗試爲「KFC」等頁面提取母公司信息(在信息框窗格中)。Wikipedia API - 從信息框中獲取完整信息

如果您訪問

http://en.wikipedia.org/wiki/KFC

網址...的信息框包含屬性(父=百勝)

.. howver,當我通過訪問PHP API ..不包括父級信息。

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

我如何保證維基API返回的「父=」信息,以及(對於一個品牌長期像「肯德基」)。基本上,我想通過維基百科API來提取Yum Brands是肯德基的母公司的信息。

謝謝!

回答

4

看看wikipedia wiki官方獲取信息的方式。

我的建議是使用屏幕抓取PHP Simple HTML DOM Parser這將始終是最好的,即使它已被棄用。唯一的缺點是,如果維基百科改變它的樣子,你將不得不更新你的代碼。

A guide to PHP Simple HTML DOM Parser。

編輯:

至少我做的,而不是鏈接到非工作資源和downvoting正確答案的東西...

這是我做來從信息框窗格中的母公司信息的代碼與PHP簡單的HTML DOM分析器。

<?php 

//The folder where you uploaded simple_html_dom.php 
require_once('/homepages/../htdocs/simple_html_dom.php'); 

//Wikipedia page to parse 
$html = file_get_html('http://en.wikipedia.org/wiki/KFC'); 


foreach ($html->find ('tr th a[title=Holding company]') as $element) { 
    $element = $element->parent; 
    $element = $element->parent; 

    $tabella = $element->find ('td', 0); 

    //Now $parent contains "Yum! Brands" 
    $parent = $tabella->plaintext; 

    echo $parent; 

} 

?> 

如果這個答案滿足您的需求,請選擇它作爲最佳答案,並給予好評,因爲我花了很大的力氣,約1小時=/

感謝;)

+0

ChicagoDude已經在使用MediaWiki API--建議他閱讀維基百科的文檔,指導他使用這個API沒有用,更不用說解決方案了。 – duskwuff

+0

我正在指導他使用DOM解析器,這似乎是唯一的解決方案 –

+0

感謝賈科莫 - 這真的有幫助! – ChicagoDude

0

的線包含該信息的文本不在文章中!它只出現在您正在查看的文章中調用的{{Infobox KFC}}模板中。

一般來說,維基百科文章的源代碼只是偶然構成的 - 文章的源代碼主要是指在頁面上生成所需輸出結束的手段。如果您嘗試從維基百科中提取結構化數據,則可能對DBPedia項目收集的數據感興趣。

+1

DBPedia的JSON Web服務現在已經關閉,並且是我幾個月前檢查過的最後一次。我不知道是否有PHP的SPARQL庫,所以至少現在廢除原始頁面源代碼似乎是實現ChicagoDude所需的最佳選擇 – Vishal