维基百科API - 从信息框获取完整信息

时间:2014-02-08 07:09:18

标签: php api wikipedia

我正在尝试提取母公司信息(在信息框窗格中)以获取诸如“KFC”之类的页面。

如果您访问

  

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

url ...信息框包含属性(Parent = Yum!Brands)

..但是,当我通过PHP API访问时...不包括父信息。

  

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

我如何确保维基百科API也返回“Parent =”信息(对于像“KFC”这样的品牌术语)。基本上,我想通过维基百科API提取Yum Brands作为肯德基的父母的信息。

谢谢!

2 个答案:

答案 0 :(得分:4)

查看wikipedia wiki获取信息的官方方式。

我的建议是使用屏幕抓取PHP Simple HTML DOM Parser,这将永远是最好的,即使它已被弃用。唯一的缺点是,如果维基百科改变了它的样子,你将不得不更新你的代码。

PHP简单HTML DOM解析器的 guide

编辑:

至少我正在做一些事情,而不是链接到非工作资源并低估正确的答案......

以下是我使用PHP Simple HTML DOM Parser从Infobox窗格获取Parent公司信息的代码。

<?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小时= /

谢谢;)

答案 1 :(得分:-1)

文章来源中没有包含该信息的文本行!它仅存在于您正在查看的文章中调用的{{Infobox KFC}}模板中。

一般来说,维基百科的文章源代码只是偶然构建的 - 文章源主要是指在页面上生成所需输出的方法。如果您尝试从维基百科中提取结构化数据,您可能会对DBPedia项目收集的数据感兴趣。