Я пытаюсь получить доступ к такой информации, как имя и логотип в разделе компании Infobox, которые были возвращены при выполнении поиска с использованием приведенного ниже кода. Я использовал пример Google. Если команда exit удалена, можно увидеть, что я могу получить доступ к contentformat и contentmodel в объекте [0], но я изо всех сил пытаюсь получить доступ к чему-либо в массиве [*] внутри этого объекта. Простите глупый вопрос, так как я уверен, что мне что-то не хватает, но любая помощь очень ценится.
<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>
Решение: не используйте Википедию в качестве базы данных, вместо этого используйте 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 >
{"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"}},...}}}
Если вам нужно найти идентификатор объекта, и вы знаете название статьи на одном языке Википедии, pywikibot может помочь: это будет что-то вроде
page = pywikibot.Page(site, 'Douglas Adams')
и вы можете продолжить оттуда.