Page 1 sur 1
Garder uniquement le contenu de wikipedia en le parsant
Posté : 22 juil. 2009, 14:41
par BafS
Bonjour a tous
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
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é

?
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

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 ?