维基百科API-grab';背景信息';桌子

维基百科API-grab';背景信息';桌子,api,mediawiki,wikipedia,Api,Mediawiki,Wikipedia,MediaWiki是否提供了返回“背景信息”表中的信息的方法?(通常在文章页面的右侧)例如,我想从Radiohead获取来源: 或者我需要解析html页面吗 安装在维基百科上的MediaWiki没有提供获取此信息的方法(有这样的扩展是为这类事情设计的,但它们没有安装在维基百科上)。您可以解析输出HTML或解析页面的wikitext,或者在某些情况下(例如出生/死亡年份),您可以通过API查看页面的类别。这是一条陡峭的学习曲线,但可以满足您的需要 您提到的“背景信息表”在维基百科中被称为“背景信

MediaWiki是否提供了返回“背景信息”表中的信息的方法?(通常在文章页面的右侧)例如,我想从Radiohead获取来源:


或者我需要解析html页面吗

安装在维基百科上的MediaWiki没有提供获取此信息的方法(有这样的扩展是为这类事情设计的,但它们没有安装在维基百科上)。您可以解析输出HTML或解析页面的wikitext,或者在某些情况下(例如出生/死亡年份),您可以通过API查看页面的类别。

这是一条陡峭的学习曲线,但可以满足您的需要

您提到的“背景信息表”在维基百科中被称为“背景信息表”,DBpedia允许对其进行非常强大的查询。不幸的是,因为它很强大,所以学习起来并不容易,而且我几乎忘记了一两年前我对它的了解。如果我能再次学习,我会在这里粘贴一个查询(-:

同时,介绍如何使用它

前一个SO问题将有助于:

更新

好的,下面是
SPARQL
查询:

SELECT ?org
WHERE {
    <http://dbpedia.org/resource/Radiohead> dbpprop:origin ?org
}
SELECT?org
在哪里{
dbpprop:origin?org
}

这是该页面上的输出:(您也可以获得各种格式的输出)

SPARQL结果:org“Abingdon, 英国牛津郡“@en

您可以使用与
rvgeneratexml
参数一起生成文章的解析树。然后您可以应用XPath或遍历XPath并查找所需信息

下面是一个示例代码:

$page = 'Radiohead';
$api_call_url = 'http://en.wikipedia.org/w/api.php?action=query&titles=' .
    urlencode( $page ) . '&prop=revisions&rvprop=content&rvgeneratexml=1&format=json';
您必须在API中标识自己,请参阅


这是不幸的:/这个MediaWiki越来越令人失望了:/但是谢谢你的回答。你提供的选项看起来很有趣,所以要感谢Matej和hippietrai。我想首先我会尝试Xpath方法,尽管我可能需要在Java中实现它。再次感谢Matej和hippietrail。哦,我没有意识到你我没有提到任何特别的语言,对此我很抱歉。
$user_agent = 'Your name <your email>';

$curl = curl_init();
curl_setopt_array( $curl, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERAGENT => $user_agent,
    CURLOPT_URL => $api_call_url,
) );
$response = json_decode( curl_exec( $curl ), true );
curl_close( $curl );

foreach( $response['query']['pages'] as $page ) {
    $parsetree = simplexml_load_string( $page['revisions'][0]['parsetree'] );
    $infobox_origin = $parsetree->xpath( '//template[contains(string(title),' .
        '"Infobox musical artist")]/part[contains(string(name),"Origin")]/value' );

    echo trim( strval( $infobox_origin[0] ) );
}