我正在尝试访问使用以下代码执行搜索时返回的Infobox公司部分中的名称和徽标等信息。我使用了谷歌的一个例子。 如果删除了exit命令,可以看到我可以访问[0]对象中的contentformat和contentmodel但是我很难访问该对象中[*]数组中的任何内容。原谅这个愚蠢的问题,因为我确定我错过了一些东西,但是我们非常感谢你们的帮助。
<html>
<head>
</head>
<body>
<html>
<body>
<h2>Search</h2>
<form method="post">
Search: <input type="text" name="q" value="google" />
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['q'])) {
$search = $_POST['q'];
$url_2 = "http://en.wikipedia.org/w/api.php?
action=query&prop=revisions&rvprop=content&format=json&titles=$search&rvsection=0&continue=";
$res_2 = file_get_contents($url_2);
$data_2 = json_decode($res_2);
echo "<pre>";
print_r($data_2);
echo "</pre>";
exit;
?>
<h2>Search results for '<?php echo $search; ?>'</h2>
<ol>
<?php foreach ($data_2->query->pages as $r):
?>
<li>
<?php echo $r->revisions[0]->contentformat; ?>
</li>
<?php endforeach; ?>
</ol>
<?php
}
?>
</body>
</html>
答案 0 :(得分:0)
解决方案:不要使用维基百科作为数据库,而是使用自己的数据库Wikidata.org。
文档:http://www.wikidata.org/w/api.php?action=help&modules=wbgetclaims
示例(Google徽标):http://www.wikidata.org/w/api.php?action=wbgetclaims&entity=Q95&property=P154&format=json&gt;
{"claims":{"P154":[{"id":"Q95$49959725-4b36-6a53-b0ef-79bc19a2474c","mainsnak":{"snaktype":"value","property":"P154","datatype":"commonsMedia","datavalue":{"value":"Logo Google 2013 Official.svg","type":"string"}},...}}}
如果您需要找到实体ID并且您知道一种维基百科语言中的文章名称,pywikibot can help:它将类似于
page = pywikibot.Page(site, 'Douglas Adams')
你可以从那里继续。