Partage

Récupération de données sur sites externes

file_get_contents ne semble pas convenir

Sujet résolu
21 août 2010 à 1:54:09

Bonjour, je voudrais récupérer des données se trouvant sur le site de Wikipédia. Il me faudrait récupérer le contenu d'articles en mode Édition tel qu'il apparaît dans le textarea. Graces à ce forum, j'avais déjà réussi à trouver la solution pour récupérer des données sur d'autres sites externes, mais là impossible de trouver la solution. Voici mon code source :

<?php
$fichier = 'http://fr.wikipedia.org/w/index.php?title=Thriller_(genre)&action=edit';

$texte = file_get_contents($fichier);

preg_match('#<textarea tabindex="1" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" name="wpTextbox1">(?<source>[^<]+)</textarea>#i', $texte, $contenu);

echo $contenu['source'];
?>


Normalement si ça devait fonctionner ça devrait m'afficher ceci :

{{Voir homonymes|Thriller}}
Le '''thriller''' ([[anglicisme]], de l'anglais '' to thrill'', frémir) est un genre artistique assez diffusé dans la [[roman policier|littérature]], le [[cinéma]] et la [[télévision]], et qui se subdivise en de nombreux sous-genres.

[blablabla .....]

[[lt:Trileris]]
[[nl:Thriller (genre)]]
[[no:Thriller]]
[[pl:Dreszczowiec]]
[[ro:Thriller (gen)]]
[[ru:Триллер]]
[[sv:Thriller (genre)]]
[[uk:Трилер]]
[[zh:驚悚 (類型)]]


Mais au lieu d'avoir le contenu ci-dessus, j'ai ce message qui s'affiche :

Warning: file_get_contents(http://fr.wikipedia.org/w/index.php?title=Thriller_(genre)&action=edit) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\wamp\www\tests\index.php on line 4

Notice: Undefined index: source in C:\wamp\www\tests\index.php on line 8


Si quelqu'un pouvait me donner la solution en corrigeant mon script. Merci par avance.

Amicalement, Aline
21 août 2010 à 3:44:47

Citation : la vilaine erreur

HTTP request failed! HTTP/1.0 403 Forbidden


le Forbidden (interdit) signifie que le serveur de Wikipédia ne t'a pas autorisé à recevoir la page que tu demandais, probablement parce que tu as fais cette requête via PHP
s'il a réussi à te repérer c'est parce que PHP fait par défaut des requêtes non "signées", c'est à dire sans indiquer de quel logiciel (et en quelle version) elles émanent
il faut donc le préciser avec un contexte de flux :
<?php
$fichier = 'http://fr.wikipedia.org/w/index.php?title=Thriller_(genre)&action=edit';

$contexte = stream_context_create(array('http' => array('user_agent' => 'alinealine awesome script')));

$texte = file_get_contents($fichier, false, $contexte);

preg_match('#<textarea tabindex="1" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" name="wpTextbox1">(?<source>[^<]+)</textarea>#i', $texte, $contenu);

echo $contenu['source'];
21 août 2010 à 21:46:29

Merci, ta correction est parfaite. Je suis encore bien débutante en php mais grâces à ce genre de correction, ça me permet d'avancer et pour ça je t'en suis très reconnaissante.

Récupération de données sur sites externes

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown