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 :

Parsing d'un code HTML


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut Parsing d'un code HTML
    Bonjour,

    J'ai essayé de parser un site dont vous trouverez une partie de la structure dans l'image suivante:

    Nom : parsing.png
Affichages : 219
Taille : 49,5 Ko

    Remarque: Sous chaque balise <div> qui a une classe (.cameraSlide cameraSlide), j'ai une balise <img>.

    je suis novice avec le PHP, et j'ai essayé avec la bibliothèque "simple_html_dom.php" comme suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?php 
    require_once "simple_html_dom.php";
     
    $html = new simple_html_dom();
    $html->load_file("http://www.css.org.tn/accueil?view=featured");
     
     
    // Instance de la class DomDocument
    $doc = new DOMDocument();
     
    // Definition de la version et l'encodage
    $doc->version = '1.0';
    $doc->encoding = 'ISO-8859-1';
     
    $comment_elt = $doc->createComment('Team Office');
    $doc->appendChild($comment_elt);
     
    foreach($html->find('.cameraSlide cameraSlide_0') as $article){
     
     
    $note_elt = $doc->createElement('article');
    $doc->appendChild($note_elt);
     
    $image    = $doc->createElement('image', $article->find('img',0)->src);
     
     
    $body_elt = $doc->createElement('body');
     
    $note_elt->appendChild($image);
     
    // Creation d'une section CDATA
    $body_cdata_elt = $doc->createCDATASection('N\'oublie pas tes talonnettes');
     
    // Placement de cette section entre les balises <body> et </body>
    $body_elt->appendChild($body_cdata_elt);
     
    }
    // Rendre Joli ;)
    $doc->formatOutput = true;
     
    // Afficher le document XML
    echo $doc->saveXML();
     
    // Sauver le document XML sous le nom simple.xml
    $doc->save('simple.xml');
     
    // Yeah on a fini!   
     
    ?>
     
    </body>
    mais je reçois une page blanche comme affichage

    Est ce que vous pouvez me dire c'est quoi l'erreur.

    Cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans la page que tu "load" il n'y a pas "cameraSlide".
    Bon utilise Domdocument ou simple_html_dom mais les deux.
    Et tu essaies de faire quoi exactement avec ces appendChild et createElement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Bonjour,

    Dans la page que tu "load" il n'y a pas "cameraSlide".
    En effet il y a plutôt .cameraSlide cameraSlide_0.

    Bon utilise Domdocument ou simple_html_dom mais les deux
    Vous avez raison, mais je suis novice en PHP C'est quoi la différence? car j'ai trouvé un tuto sur internet.

  4. #4
    Membre éprouvé
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Domdocument est le parseur natif de PHP et simple_html_dom est un parser externe qui utilise une syntaxe semblable à jQuery pour sélectionner les noeuds.

    Bref, ils ont tous les deux le même rôle alors il suffit d'en choisir un, c'est un peu "stupide" d'utiliser les deux !

    Bien à toi,

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Merci à vous!

    J'ai essayé de rectifié mon code de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <body>
    <?php 
    require_once "simple_html_dom.php";
     
    $html = new simple_html_dom();
    $html->load_file("http://www.css.org.tn/accueil");
     
    $link = $html->find('.camera_src camerastarted div');
     
    foreach ($link as $ligne) 
    { 
    echo '--'.$ligne;
    } 
     
    //echo $buff;
    //echo $link['data-src'];
    $href = $link->getAttribute('data-src');
     
    echo $href;
    Voici la partie HTML que je voulais parser:

    Nom : pbparsing.png
Affichages : 222
Taille : 28,9 Ko

    Mais lors de l’exécution, rien ne s'affiche a part ceci:

    Fatal error: Call to a member function getAttribute() on a non-object in C:\wamp\www\CSSParser\index2.php on line 24
    qui est relatif à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $href = $link->getAttribute('data-src');

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Il y a une autre chose, quand j'ai consulté la structure du site (en utilisant l'inspecteur d'éléments), j'ai trouvé dans l'attribut src que les images sont stockés dans un dossier images... Alors je me pose la question comment pourrais-je les extraire(/parser) sans avoir une visibilité sur le chemin absolue?

    Cordialement.

Discussions similaires

  1. Parsing de code HTML
    Par katcha95 dans le forum Bibliothèque standard
    Réponses: 0
    Dernier message: 25/10/2009, 15h49
  2. Problème d'exécution de code HTML (parse error)
    Par dimitri13 dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2009, 16h53
  3. Parse code HTML avec PHP
    Par naourass dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 08h12
  4. [RegEx] Parsing complexe de code HTML
    Par choas dans le forum Langage
    Réponses: 4
    Dernier message: 14/03/2006, 11h41
  5. composant builder4 pour afficher du code html
    Par BranRuz dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/09/2002, 11h35

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