2014-11-23 3 views
0

아래 코드를 사용하여 검색 할 때 반환되는 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

해결 방법 : 데이터베이스로 Wikipedia를 사용하지 말고 대신 자체 데이터베이스 인 Wikidata.org를 사용하십시오.

문서 : http://www.wikidata.org/w/api.php?action=help&modules=wbgetclaims

예 (Google 로고) : 당신이 엔티티 ID를 찾을 필요가 당신은 하나 개의 위키 백과 언어, pywikibot can help에있는 문서의 이름을 알고있는 경우 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"}},...}}} 

것은 :이 될 것입니다 예 :

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

등으로 계속 진행할 수 있습니다.

+0

감사합니다. 정말 고맙습니다. 나는 그것을 시도 할 것이다 – Oroku

+0

엔티티 가치를 찾는 쉬운 방법을 알고 있습니까? – Oroku

+0

@Oroku, 제 답변에 추가하겠습니다. – Nemo

관련 문제