IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Parser une page web avec Simple HTML DOM


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut Parser une page web avec Simple HTML DOM
    Bonjour,

    Je souhaite parser (avec Simple HTML DOM) le code source de cette page : http://www.jeuxdemots.org/rezo-xml.p...output=onlyxml.

    Plus précisément, je voudrais récupérer toutes les balises "rel" et afficher leurs attributs "type", j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $html = file_get_html('http://www.jeuxdemots.org/rezo-xml.php?gotermsubmit=Chercher&gotermrel=chien&output=onlyxml');  
    foreach($html->find('rel') as $e) 
         echo $e->type . '<br>';
    Mais ca ne fonctionne pas, ca affiche page blanche. Pourquoi?
    Est ce que DOM ne reconnait pas la balise "rel" ?
    De plus, le code source de l'URL me parait bizarre, on dirait un mélange de HTML et XML...
    Comment je pourrais parser ça en PHP?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Points : 333
    Points
    333
    Par défaut
    Bonjour,

    C'est quoi cette fonction file_get_html() ?

    Une fonction que tu as écrites toi même ?

  3. #3
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    C'est une fonction de la librairie Simple HTML DOM (find() aussi), qui permet de créer un DOM à partir d'une URL.

  4. #4
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Apparement ce serait un bug.
    J'ai utilisé Advanced HTML DOM à la place, et ça fonctionne.

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Sinon, tu as DOMDocument, qui ne nécessite aucune installation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $dom = new DOMDocument;
    $dom->loadHTMLFile('http://www.jeuxdemots.org/rezo-xml.php?gotermsubmit=Chercher&gotermrel=lampe&output=onlyxml');
     
    $relNodeList = $dom->getElementsByTagName('rel');
     
    foreach($relNodeList as $relNode) {
        if ($relNode->hasAttribute('type'))
            echo $relNode->getAttribute('type') . PHP_EOL;
    }
    Ce sera plus rapide que 'simple_html_dom' qui en plus de ne pas être spécialement simple est lent, et que advanced_html_dom, qui n'est ni plus ni moins qu'une surcouche de DOMDocument avec des fonctionnalités qui dans le cas présent ne te servent à rien.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parser une page HTML avec Simple html dom parser
    Par thelover2fr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 24/05/2012, 13h26
  2. Recuperer le contenu HTML d'une page web avec FLEX
    Par kididouille dans le forum Flex
    Réponses: 0
    Dernier message: 02/06/2010, 15h45
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. Ouvrir une page Web avec le navigateur
    Par BB85_TIGRIS dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 17/12/2005, 09h45
  5. Son dans une page Web avec Firefox
    Par diod dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/12/2005, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo