Page 1 sur 1

Garder uniquement le contenu de wikipedia en le parsant

Posté : 22 juil. 2009, 14:41
par BafS
Bonjour a tous :D
Alors il existe des pages wikipédia ou le contenu se trouve au format XML, par exemple :
http://en.wikipedia.org/wiki/Special:Export/Automobile.
J'aimerais bien pourvoir, au final, afficher uniquement le texte qui se trouve entre les balises <text>.
Seulement quand j'essaie d'ouvrir cette page avec
$url= new DOMDocument();
$url->loadHTMLFile($file);
ça ne marche pas, j'ai aussi testé $site= join('',file("http://site.com")); mais rien n'y fait...

Si vous pouviez m'aider ce serait super :wink:
Merci d'avance !

Posté : 22 juil. 2009, 14:43
par momox
Peux tu expliquer le problème ? Les erreurs rencontrées ?

Posté : 22 juil. 2009, 19:14
par BafS
J'ai des erreurs de ce type :

Code : Tout sélectionner

failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\wamp\www\test\index.php on line 11.
Et ma ligne 11 est justement $url->loadHTMLFile($file);.
Donc au final, je n'arrive pas à prendre la page pour la mettre dans une variable alors que si je fais :
$dist = join('',file("http://fr.wikipedia.org/wiki/arbre"));
echo $dist;
ça marche parfaitement, mais c'est beaucoup plus dur à parser...

Posté : 22 juil. 2009, 19:16
par thehawk
Regarde peut être du coté de simplexml :)

Posté : 23 juil. 2009, 17:17
par BafS
Regarde peut être du coté de simplexml :)
Ouais, j'ai essayé mais j'ai chaque fois l'erreur. Serait-il possible que quelqu'un me donne juste le début d'un script qui fonctionne afin que je ne soit plus bloqué :wink: ?
Merci d'avance

Posté : 23 juil. 2009, 17:25
par Victor BRITO
Si tu cherches à charger du XML contenu dans une URL que tu traites comme un fichier, tu risques de perdre ton temps (n'oublie jamais qu'une URL peut ne pas correspondre à un dossier ou à un fichier réel ;) ).

Essaie de récupérer le contenu avec file_get_contents(), puis de charger le XML avec la méthode loadXML () de la classe DOMDocument :
$xml = file_get_contents ('http://en.wikipedia.org/wiki/Special:Export/Automobile');
$dom = new DOMDocument;
$dom -> loadXML ($xml);

Posté : 23 juil. 2009, 17:47
par BafS
Merci pour t'as réponse mais j'ai malheureusement :

Code : Tout sélectionner

Warning: file_get_contents(http://en.wikipedia.org/wiki/Special:Export/Automobile) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\wamp\www\test\index.php on line 2 Warning: DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input in C:\wamp\www\test\index.php on line 4
Et je ne pense pas que ce soit à cause de Wamp car j'ai la même erreur sur mon hébergeur...

Posté : 23 juil. 2009, 17:59
par Victor BRITO
À mon avis, tu ne pourras jamais récupérer le contenu comme tu le souhaites, vu le code HTTP retourné (403).

Posté : 23 juil. 2009, 20:34
par BafS
À mon avis, tu ne pourras jamais récupérer le contenu comme tu le souhaites, vu le code HTTP retourné (403).
Mais alors à quoi peut servir cette page ?
Bon, je crois que je serais obligé de parser les pages normales... Je sens que je vais m'amuser avec les regexs :P

Posté : 24 juil. 2009, 22:53
par BafS
Et j'ai la même erreur quand j'essaie avec la version imprimable par ex. http://fr.wikipedia.org/w/index.php?tit ... ntable=yes.
Pas de solution ? On peut pas changer notre header pour bypasser la protection ?