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

Discussion: PHP Simple HTML DOM

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien HelpDesk & développeur php
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien HelpDesk & développeur php

    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 92
    Points
    92

    Par défaut PHP Simple HTML DOM

    Bonjour,

    Je me suis lancé dans un nouveau projet, récupérer certaines informations depuis un site internet en php.

    Le but final est de d'afficher ces informations sous la forme d'une page web qui s'affiche sur mon MagicMirror.

    Pour ce faire, je suis parti sur PHP Simple Html Dom.

    Voici le script à l'état actuel :

    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
     
    <?php include_once('simple_html_dom.php');?>
    <!doctype html>
    <html>
      <head>
    	 <meta charset="utf8">
    	 <meta http-equiv="X-UA-Compatible" Content="IE=edge">
         <title>---</title>
    	 <link href="http://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylsheet">
    </head>
     
    <body>
    <?php
    $html = file_get_html('https://six-group.com/exchanges/funds/security_info_fr.html?id=GREEN');
    echo ("Titre : ");
    foreach($html->find('<h1>') as $numero) {
    echo $numero->plaintext.'  ';
    }
    echo ("<br>Dernier cours : ");
    echo $html->find('SIP_OV_ClosingPrice');
    echo ("<br>Variation quotidienne : ");
    echo $html->find('SIP_OV_ClosingPriceSpecial');
    ?>
    </body>
    </html>
    L'information à récupérer est le prix dont le libellé est "le dernier cours" (en dessus du graphique OU à droite du graphique"
    Vous pouvez voir le site ici : https://six-group.com/exchanges/fund....html?id=GREEN

    Dans l'état actuel, j'arrive à récupérer le "titre" mais lorsque j'appelle l'id pour le prix, j’obtiens "Array"...

    Pourriez-vous m'indiquer quel est le souci ?

    Merci d'avance
    Math11
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    juin 2010
    Messages
    2 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : juin 2010
    Messages : 2 901
    Points : 6 244
    Points
    6 244

    Par défaut

    Sans connaître la bibli, j’imagine que $html->find() renvoie un Array même quand il n’y a qu’un seul ou zéro élément. Il faut donc accéder au contenu du tableau.
    À titre provisoire, tu peux vérifier ce que contient le tableau en utilisant print_r() ou var_dump() à la place de echo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo ("<br>Dernier cours : ");
    var_dump( $html->find('SIP_OV_ClosingPrice') );
    Vu que 'SIP_OV_ClosingPrice' a l’air d’être un id, et vu comment fonctionnent les sélecteurs CSS habituellement, il faudra sans doute que tu ajoutes un # :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump( $html->find('#SIP_OV_ClosingPrice') );
    Enfin, si ton tableau contient bien quelque chose, ce sera un objet de la bibli html, qui ne produit peut-être pas de sortie textuelle utile, même avec var_dump(). On peut sans doute utiliser la propriété plaintext.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $coursArray = $html->find('#SIP_OV_ClosingPrice');
    if (isset($coursArray[0])) {
        echo $coursArray[0]->plaintext;
    }
    else {
        echo 'Élément non trouvé';
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien HelpDesk & développeur php
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien HelpDesk & développeur php

    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 92
    Points
    92

    Par défaut

    Merci Watilin pour ta réponse,

    Mais lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($html->find('#SIP_OV_ClosingPrice'));
    , j'obtiens "array(0) { }".

    Et lorsque j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $coursArray = $html->find('#SIP_OV_ClosingPrice');
    if (isset($coursArray[0])) {
        echo $coursArray[0]->plaintext;
    }
    else {
        echo 'Élément non trouvé';
    }
    Plus rien ne s'affiche sur la page.

    Ai-je oublié quelque chose ?

    Merci d'avance,

    Math11
    Images attachées Images attachées  

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    juin 2010
    Messages
    2 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : juin 2010
    Messages : 2 901
    Points : 6 244
    Points
    6 244

    Par défaut

    Ah, j’aurais dû y penser… L’élément que tu cibles est créé via JavaScript. Il y a de fortes chances que la bibliothèque PHP Simple Html Dom ne soit pas équipée d’un interpréteur JS.
    Si tu as de la chance, le site a une API à laquelle tu peux demander les données ; sinon, tu vas devoir examiner le code JS de la page en espérant qu’il ne soit pas trop complexe.

    Sinon tu peux aussi tenter de :
    1. lancer un navigateur depuis ton script PHP ;
    2. le faire aller sur la page, interpréter le JS et récupérer la donnée qui t’intéresse ;
    3. là, un userscript ou une extension que tu auras installée préalablement interviendra pour envoyer la donnée vers ton serveur.


    J’ai vu des gens utiliser la technique du navigateur, mais je ne sais plus exactement comment ils faisaient (peut-être tout bêtement avec exec()). Dans tous les cas il faut la permission d’exécuter un logiciel sur le serveur, donc il te faut un serveur dédié ou un micro ordi (type Raspberry Pi).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien HelpDesk & développeur php
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien HelpDesk & développeur php

    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 92
    Points
    92

    Par défaut

    Merci Watilin pour ton indication,

    Je m'étais lancé dans cette fonction en php; avant j'avais testé avec Jquery, mais sans succès...

    Je regarderais ça probablement demain...

    Math11

Discussions similaires

  1. PHP Simple HTML DOM Parser
    Par PaskoPHP dans le forum Scripts
    Réponses: 2
    Dernier message: 07/01/2019, 20h47
  2. PHP Simple HTML DOM parser
    Par Beruco dans le forum Scripts
    Réponses: 0
    Dernier message: 17/06/2017, 18h15
  3. Parser une page HTML avec Simple html dom parser
    Par thelover2fr dans le forum Scripts
    Réponses: 3
    Dernier message: 24/05/2012, 13h26
  4. PHP Simple HTML DOM Parser
    Par almoha dans le forum Débuter
    Réponses: 11
    Dernier message: 02/03/2012, 21h40
  5. API simple html dom
    Par ryodo dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/07/2011, 03h35

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