2014-11-23 2 views
0

Я пытаюсь получить доступ к такой информации, как имя и логотип в разделе компании 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> 

ответ

0

Решение: не используйте Википедию в качестве базы данных, вместо этого используйте Wikidata.org, которая является собственной базой данных.

Docs: 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 can help: это будет что-то вроде

page = pywikibot.Page(site, 'Douglas Adams') 

и вы можете продолжить оттуда.

+0

спасибо, что я очень ценю это. Я попробую это – Oroku

+0

Знаете ли вы, какой простой способ найти значение сущности? – Oroku

+0

@Oroku, позвольте мне добавить его к моему ответу. – Nemo

Смежные вопросы