2011-04-12 2 views
1

Je cherche à récupérer le XML d'une page Wikipedia en utilisant leur API. L'URL que j'utilise est la suivante: http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=dogphp et MediaWiki

J'ai vu this, mais cela n'a pas aidé. Peu importe ce que je fais, je ne reçois rien à $ c, et je n'arrive pas à comprendre pourquoi. Je peux faire file_get_contents avec un fichier texte, et cela fonctionne très bien. Quelqu'un d'autre peut-il vérifier que cela fonctionne?

<?php 
$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page'; 
$c = file_get_contents($url); 
echo $c; 
?> 

EDIT J'ai également essayé les cURL disponibles sur cette page, qui ne fonctionne pas aussi:

$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page'; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$c = curl_exec($ch); 
echo $c; 
+1

peut-être que les urls sont désactivées sur file_get_contents par votre hébergeur, avez-vous essayé curl à la place? – Twelve47

+0

'Attention: file_get_contents (http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page) [function.file-get-contents]: impossible d'ouvrir le flux : Requête HTTP a échoué! HTTP/1.0 403 Interdit dans [fichier] ' – oblig

+0

J'ai aussi essayé la boucle, que je n'ai pas réussi à utiliser. Je l'ai posté ci-dessus pour référence. –

Répondre

4

wikipedia vous devez spécifier un agent utilisateur descriptif, en faisant quelque chose comme ceci:

<?php 
$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page'; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_USERAGENT, "MyCoolTool (+http://example.com/MyCoolToolPage/)"); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$c = curl_exec($ch); 
echo $c; 
?> 

vous devez utiliser une chaîne de l'agent utilisateur qui décrit votre site, et vous ne devriez pas usurper un agent utilisateur du navigateur Web ou que vous soyez bloc ked pour apparaître suspect (source: WikiMedia User-Agent policy)

+1

N'utilisez pas d'agent d'utilisateur de navigateur, ou vous risquez de voir votre adresse IP bannie par les administrateurs système. Utilisez quelque chose qui identifie votre programme et contient votre adresse e-mail ou site Web. Voir [Politique d'utilisateur-agent de Wikimedia] (http://meta.wikimedia.org/wiki/User-Agent_policy) pour plus de détails. – Anomie

+1

@Anomie, merci. J'ai mis à jour ma réponse pour en tenir compte. – Twelve47