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 :

Récupérer des donnés provenant d'une page web


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Récupérer des donnés provenant d'une page web
    Salut

    Voilà je cherche à récupérer des données d'un tableau d'une page web.
    Celle-ci: http://www.vola-racing.com/circuitpro/default/

    Par exemple connaissant le numéro de kart, je souhaiterais récupérer les informations le concernant.

    J'ai essayé ce code mais il ne fonctionne pas. Peut être cela vient de la page web qui affiche du javascript?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $fichier = 'http://www.vola-racing.com/circuitpro/default';
     
    $texte = file_get_contents($fichier);
     
    preg_match('#<td id="c8_1" class="rk">(?<rank>[^<]+)</td><td id="c8_2" class="nu">11</td>#i', $texte, $rang);
     
    echo $rang['rank'];
    ?>
    Quelqu'un aurait une solution à me proposer?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Bonjour,

    C'est effectivement à cause du javascript... file_get_contents va te retourner le code source de la page, et non le code html qui permet de voir la page telle qu'elle est...
    La page étant générée en javascript, il faudrait que tu interprètes le code javascript pour récupérer les données... Mais bon, là c'est pas trivial.
    C'est peut-être un (bon ?) moyen de protéger ces données contre du parsing automatique et non désiré...

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu n'as qu'a réccupérer ce que le javascript du site cible demande au serveur.
    Regarde dans la console de firebug quand tu visite le site, il y a des requêtes ajax qui partent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.vola-racing.com/circuitpro/default/text.php?file=data7_1.txt&0.15811033481041903
    renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <table><thead><th>Start</th><th>6</th><th>5</th><th>13</th><th>8</th><th>3</th><th>16</th><th>9</th><th>12</th><th>24</th><th>52</th><th>64</th><th>66</th><th>57</th><th>51</th><th>63</th><th>55</th><th>58</th><th>68</th></thead><tr><td>Lap 1</td><td class="tp">6</td><td class="tg">13</td><td class="tp">3</td><td class="tg">8</td><td class="tg">12</td><td class="tg">5</td><td class="tg">16</td><td class="tg">9</td><td class="tg">24</td><td class="tp">52</td><td class="tp">51</td><td class="tg">66</td><td class="tg">58</td><td class="tg">64</td><td class="tg">55</td><td class="tg">57</td><td class="tg">63</td><td class="tg">68</td></tr><tr><td>Lap 2</td><td class="tp">6</td><td class="tp">12</td><td class="tg">13</td><td class="tg">3</td><td class="tg">8</td><td class="tg">5</td><td class="tg">16</td><td class="tg">9</td><td class="tg">24</td><td class="tp">52</td><td class="tp">51</td><td class="tg">66</td><td class="tg">58</td><td class="tg">64</td><td class="tg">55</td><td class="tg">57</td><td class="tg">63</td><td class="tg">68</td></tr><tr><td>Lap 3</td><td class="tp">12</td><td class="tg">6</td><td class="tg">13</td><td class="tg">3</td><td class="tg">8</td><td class="tg">16</td><td class="tg">5</td><td class="tg">9</td><td class="tg">24</td><td class="tp">51</td><td class="tg">52</td><td class="tg">66</td><td class="tg">58</td><td class="tg">64</td><td class="tg">55</td><td class="tg">57</td><td class="tg">63</td><td class="tg">68</td></tr><tr><td>Lap 4</td><td class="tp">12</td><td class="tg">13</td><td class="tg">3</td><td class="tg">8</td><td class="ty">16</td><td class="ty">6</td><td class="tg">5</td><td class="tg">9</td><td class="tg">24</td><td class="tg">51</td><td class="tg">52</td><td class="tg">66</td><td class="tg">58</td><td class="tg">64</td><td class="tg">55</td><td class="tg">57</td><td class="tg">63</td><td class="tg">68</td></tr><tr><td>Lap 5</td><td class="tp">12</td><td class="ty">13</td><td class="tg">3</td><td class="ty">8</td><td class="ty">16</td><td class="tg">6</td><td class="ty">5</td><td class="ty">9</td><td class="ty">24</td><td class="ty">51</td><td class="tg">52</td><td class="ty">66</td><td class="ty">58</td><td class="ty">64</td><td class="tg">55</td><td class="tg">57</td><td class="tg">63</td><td class="tg">68</td></tr><tr><td>Lap 6</td><td class="ty">12</td><td class="tg">3</td><td class="tg">13</td><td class="tg">8</td><td class="tg">16</td><td class="tg">6</td><td class="tg">5</td><td class="tg">9</td><td class="tg">51</td><td class="ty">52</td><td class="ty">24</td><td class="tg">66</td><td class="ty">58</td><td class="ty">64</td><td class="ty">55</td><td class="ty">57</td><td class="ty">63</td><td class="ty">68</td></tr><tr><td>Lap 7</td><td class="ty">12</td><td class="ty">3</td><td class="tg">13</td><td class="tg">8</td><td class="ty">16</td><td class="ty">6</td><td class="tg">5</td><td class="tg">9</td><td class="tg">51</td><td class="tg">52</td><td class="tg">24</td><td class="ty">66</td><td class="tg">58</td><td class="tg">64</td><td class="tg">55</td><td class="tg">63</td><td class="ty">57</td><td class="ty">68</td></tr><tr><td>Lap 8</td><td class="ty">12</td><td class="ty">3</td><td class="ty">13</td><td class="ty">8</td><td class="tg">16</td><td class="ty">6</td><td class="ty">5</td><td class="ty">9</td><td class="ty">51</td><td class="ty">52</td><td class="ty">66</td><td class="ty">24</td><td class="tg">58</td><td class="ty">64</td><td class="ty">55</td><td class="ty">63</td><td class="tg">57</td><td class="tg">68</td></tr><tr><td>Lap 9</td><td class="ty">12</td><td class="ty">3</td><td class="tg">13</td><td class="ty">8</td><td class="ty">16</td><td class="ty">6</td><td class="ty">5</td><td class="ty">9</td><td class="ty">51</td><td class="tg">52</td><td class="ty">66</td><td class="ty">24</td><td class="ty">58</td><td class="ty">64</td><td class="ty">63</td><td class="ty">55</td><td class="ty">57</td><td class="ty">68</td></tr><tr><td>Lap 10</td><td class="ty">12</td><td class="tg">3</td><td class="ty">13</td><td class="ty">8</td><td class="ty">16</td><td class="ty">51</td><td class="ty">5</td><td class="ty">6</td><td class="ty">9</td><td class="ty">52</td><td class="ty">66</td><td class="ty">24</td><td class="tg">58</td><td class="tg">63</td><td class="ty">64</td><td class="tg">57</td><td class="ty">55</td><td class="ty">68</td></tr></table>
    C'est ce genre d'URL que tu dois appeller.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    et utilise DOMDocument pour parser du HTML, les regexp c'est pas du tout fait pour

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    @Benjamin Delespierre:
    Je n'arrive pas à trouver la bonne requête ajax qui m'intéresse. Je trouve toutes celles qui ne m'intéresse pas. La partie qui m'intéresse c'est l'onglet ranking.


    @stealth35:
    J'ai essayé d'utiliser du domdocument pour parser mais rien ne s'affiche. Aurais-je fait une erreur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $doc = new DOMDocument();
    $doc->loadHTMLFile("http://www.vola-racing.com/circuitpro/default/index.html");
    echo $doc->saveHTML();
    ?>
    Quelqu'un a une idée pour me dépanner?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est un site en flash, donc faut recupere les donnée que t'as dis Benjamin Delespierre et ensuite les parser avec DOMDocument

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Oui j'ai utilisé firebug comme a dit Benjamin Delespierre pour trouver les liens suivant:

    http://www.vola-racing.com/circuitpr...le=data1_1.txt
    http://www.vola-racing.com/circuitpr...le=data2_1.txt
    http://www.vola-racing.com/circuitpr...le=data3_1.txt
    http://www.vola-racing.com/circuitpr...le=data4_1.txt
    http://www.vola-racing.com/circuitpr...le=data5_1.txt
    http://www.vola-racing.com/circuitpr...le=data6_1.txt
    http://www.vola-racing.com/circuitpr...le=data7_1.txt

    Malheureusement aucun d'eux ne correspondent à la page principale rank. J'ai le résultat des 2 autres onglets ainsi que les codes html des menus. C'est étonnant.

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Sur la page rank, j'ai trouvé celle là (y'en a beaucoup qui partent, il va te faloir comprendre leur mécanisme pour réccupérer la bonne à un instant t - regarde dans le javascript du site pour comprendre cette logique).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.vola-racing.com/circuitpro/default/update.php?dir=circuitpro:default&index=0&0.43127899390962987
    donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1data<table><thead><th width="7%">Clt</th><th width="7%">N&#176;</th><th width="23%">Driver</th><th width="8%">Nat</th><th width="14%">Dernier tour</th><th width="14%">Ecart</th><th width="14%">Interv.</th><th width="7%">&nbsp;</th></thead><tr class="tr1"><td id="c1_1" class="rk">1</td><td id="c1_2" class="nu">12</td><td id="c1_3" class="">N.Moller Madsen,</td><td><div id="c1_4" class="nat_DK">&nbsp;</div></td><td id="c1_5" class="tg">25.094</td><td id="c1_6" class="tw">11 Tours</td><td id="c1_7" class="tw"></td><td><div id="c1_8" class="gs">&nbsp;</div></td></tr><tr class="tr2"><td id="c2_1" class="rk">2</td><td id="c2_2" class="nu">10</td><td id="c2_3" class="">R.Nadin,</td><td><div id="c2_4" class="nat_L">&nbsp;</div></td><td id="c2_5" class="tg">25.187</td><td id="c2_6" class="tw">+1.000</td><td id="c2_7" class="tw">+1.000</td><td><div id="c2_8" class="gs">&nbsp;</div></td></tr><tr class="tr1"><td id="c3_1" class="rk">3</td><td id="c3_2" class="nu">15</td><td id="c3_3" class="">V.Öberg,</td><td><div id="c3_4" class="nat_S">&nbsp;</div></td><td id="c3_5" class="tg">25.109</td><td id="c3_6" class="tw">+1.344</td><td id="c3_7" class="tw">+0.344</td><td><div id="c3_8" class="gs">&nbsp;</div></td></tr><tr class="tr2"><td id="c4_1" class="rk">4</td><td id="c4_2" class="nu">16</td><td id="c4_3" class="">M.Freck Jørgensen,</td><td><div id="c4_4" class="nat_DK">&nbsp;</div></td><td id="c4_5" class="tg">25.188</td><td id="c4_6" class="tw">+2.391</td><td id="c4_7" class="tw">+1.047</td><td><div id="c4_8" class="gs">&nbsp;</div></td></tr><tr class="tr1"><td id="c5_1" class="rk">5</td><td id="c5_2" class="nu">14</td><td id="c5_3" class="">S.Luka,</td><td><div id="c5_4" class="nat_B">&nbsp;</div></td><td id="c5_5" class="tg">25.422</td><td id="c5_6" class="tw">+3.625</td><td id="c5_7" class="tw">+1.234</td><td><div id="c5_8" class="gs">&nbsp;</div></td></tr><tr class="tr2"><td id="c6_1" class="rk">6</td><td id="c6_2" class="nu">22</td><td id="c6_3" class="">K.Bromseth,</td><td><div id="c6_4" class="nat_N">&nbsp;</div></td><td id="c6_5" class="tg">25.375</td><td id="c6_6" class="tw">+5.000</td><td id="c6_7" class="tw">+1.375</td><td><div id="c6_8" class="gs">&nbsp;</div></td></tr><tr class="tr1"><td id="c7_1" class="rk">7</td><td id="c7_2" class="nu">21</td><td id="c7_3" class="">K.Bouman,</td><td><div id="c7_4" class="nat_NL">&nbsp;</div></td><td id="c7_5" class="tg">25.500</td><td id="c7_6" class="tw">+7.031</td><td id="c7_7" class="tw">+2.031</td><td><div id="c7_8" class="gs">&nbsp;</div></td></tr><tr class="tr2"><td id="c8_1" class="rk">8</td><td id="c8_2" class="nu">11</td><td id="c8_3" class="">C.Nielsen,</td><td><div id="c8_4" class="nat_DK">&nbsp;</div></td><td id="c8_5" class="ty">26.656</td><td id="c8_6" class="tw">+1 Tour</td><td id="c8_7" class="tw">+1 Tour</td><td><div id="c8_8" class=""></div></td></tr><tr class="tr1"><td id="c9_1" class="rk">9</td><td id="c9_2" class="nu">5</td><td id="c9_3" class="">L.Ringbom,</td><td><div id="c9_4" class="nat_FIN">&nbsp;</div></td><td id="c9_5" class="ty">26.954</td><td id="c9_6" class="tw">+1 Tour</td><td id="c9_7" class="tw">+1.563</td><td><div id="c9_8" class=""></div></td></tr><tr class="tr2"><td id="c10_1" class="rk">10</td><td id="c10_2" class="nu">31</td><td id="c10_3" class="">M.Gatting,</td><td><div id="c10_4" class="nat_DK">&nbsp;</div></td><td id="c10_5" class="tg">25.359</td><td id="c10_6" class="tw">+1 Tour</td><td id="c10_7" class="tw">+1.140</td><td><div id="c10_8" class=""></div></td></tr><tr class="tr1"><td id="c11_1" class="rk">11</td><td id="c11_2" class="nu">1</td><td id="c11_3" class="">J.Johansson,</td><td><div id="c11_4" class="nat_S">&nbsp;</div></td><td id="c11_5" class="tg">26.500</td><td id="c11_6" class="tw">+1 Tour</td><td id="c11_7" class="tw">+1.485</td><td><div id="c11_8" class=""></div></td></tr><tr class="tr2"><td id="c12_1" class="rk">12</td><td id="c12_2" class="nu">33</td><td id="c12_3" class="">J.Hansen,</td><td><div id="c12_4" class="nat_DK">&nbsp;</div></td><td id="c12_5" class="tg">24.985</td><td id="c12_6" class="tw">+1 Tour</td><td id="c12_7" class="tw"></td><td><div id="c12_8" class=""></div></td></tr><tr class="tr1"><td id="c13_1" class="rk">13</td><td id="c13_2" class="nu">18</td><td id="c13_3" class="">E.Antonsen,</td><td><div id="c13_4" class="nat_N">&nbsp;</div></td><td id="c13_5" class="tg">26.531</td><td id="c13_6" class="tw">+1 Tour</td><td id="c13_7" class="tw">+0.765</td><td><div id="c13_8" class=""></div></td></tr><tr class="tr2"><td id="c14_1" class="rk">14</td><td id="c14_2" class="nu">32</td><td id="c14_3" class="">K.Gleisner,</td><td><div id="c14_4" class="nat_FIN">&nbsp;</div></td><td id="c14_5" class="tg">24.765</td><td id="c14_6" class="tw">+1 Tour</td><td id="c14_7" class="tw">+0.203</td><td><div id="c14_8" class=""></div></td></tr><tr class="tr1"><td id="c15_1" class="rk">15</td><td id="c15_2" class="nu">24</td><td id="c15_3" class="">G.Chauveau,</td><td><div id="c15_4" class="nat_B">&nbsp;</div></td><td id="c15_5" class="tg">24.812</td><td id="c15_6" class="tw">+1 Tour</td><td id="c15_7" class="tw">+0.250</td><td><div id="c15_8" class=""></div></td></tr><tr class="tr2"><td id="c16_1" class="rk">16</td><td id="c16_2" class="nu">6</td><td id="c16_3" class="">D.Schilling,</td><td><div id="c16_4" class="nat_DK">&nbsp;</div></td><td id="c16_5" class="tg">25.531</td><td id="c16_6" class="tw">+1 Tour</td><td id="c16_7" class="tw">+1.250</td><td><div id="c16_8" class=""></div></td></tr><tr class="tr1"><td id="c17_1" class="rk">17</td><td id="c17_2" class="nu">23</td><td id="c17_3" class="">K.Charles,</td><td><div id="c17_4" class="nat_B">&nbsp;</div></td><td id="c17_5" class="tg">24.375</td><td id="c17_6" class="tw">+1 Tour</td><td id="c17_7" class="tw">+0.563</td><td><div id="c17_8" class=""></div></td></tr><tr class="tr2"><td id="c18_1" class="rk">18</td><td id="c18_2" class="nu">29</td><td id="c18_3" class="">D.Dupont,</td><td><div id="c18_4" class="nat_B">&nbsp;</div></td><td id="c18_5" class="tg">23.953</td><td id="c18_6" class="tw">+1 Tour</td><td id="c18_7" class="tw">+0.937</td><td><div id="c18_8" class=""></div></td></tr><tr class="tr1"><td id="c19_1" class="rk">19</td><td id="c19_2" class="nu">8</td><td id="c19_3" class="">L.Koivuluoma,</td><td><div id="c19_4" class="nat_FIN">&nbsp;</div></td><td id="c19_5" class="tg">24.734</td><td id="c19_6" class="tw">+1 Tour</td><td id="c19_7" class="tw">+0.250</td><td><div id="c19_8" class=""></div></td></tr><tr class="tr2"><td id="c20_1" class="rk">20</td><td id="c20_2" class="nu">30</td><td id="c20_3" class="">F.Fröjd,</td><td><div id="c20_4" class="nat_S">&nbsp;</div></td><td id="c20_5" class="tp">23.625</td><td id="c20_6" class="tw">+1 Tour</td><td id="c20_7" class="tw">+0.563</td><td><div id="c20_8" class=""></div></td></tr><tr class="tr1"><td id="c21_1" class="rk">21</td><td id="c21_2" class="nu">20</td><td id="c21_3" class="">K.Balthazar,</td><td><div id="c21_4" class="nat_B">&nbsp;</div></td><td id="c21_5" class="tg">23.938</td><td id="c21_6" class="tw">+1 Tour</td><td id="c21_7" class="tw">+0.547</td><td><div id="c21_8" class=""></div></td></tr><tr class="tr2"><td id="c22_1" class="rk">22</td><td id="c22_2" class="nu">27</td><td id="c22_3" class="">D.Davies,</td><td><div id="c22_4" class="nat_NL">&nbsp;</div></td><td id="c22_5" class="tg">23.828</td><td id="c22_6" class="tw">+1 Tour</td><td id="c22_7" class="tw">+0.093</td><td><div id="c22_8" class=""></div></td></tr><tr class="tr1"><td id="c23_1" class="rk">23</td><td id="c23_2" class="nu">28</td><td id="c23_3" class="">G.De Ridder,</td><td><div id="c23_4" class="nat_B">&nbsp;</div></td><td id="c23_5" class="tg">24.781</td><td id="c23_6" class="tw">+1 Tour</td><td id="c23_7" class="tw">+2.438</td><td><div id="c23_8" class=""></div></td></tr><tr class="tr2"><td id="c24_1" class="rk">24</td><td id="c24_2" class="nu">3</td><td id="c24_3" class="">J.Wiman,</td><td><div id="c24_4" class="nat_FIN">&nbsp;</div></td><td id="c24_5" class="tg">26.187</td><td id="c24_6" class="tw">+1 Tour</td><td id="c24_7" class="tw">+1.984</td><td><div id="c24_8" class=""></div></td></tr><tr class="tr1"><td id="c25_1" class="rk">25</td><td id="c25_2" class="nu">4</td><td id="c25_3" class="">C.Picariello,</td><td><div id="c25_4" class="nat_B">&nbsp;</div></td><td id="c25_5" class="tg">26.203</td><td id="c25_6" class="tw">+1 Tour</td><td id="c25_7" class="tw"></td><td><div id="c25_8" class=""></div></td></tr><tr class="tr2"><td id="c26_1" class="rk">26</td><td id="c26_2" class="nu">34</td><td id="c26_3" class="">R.Hansson,</td><td><div id="c26_4" class="nat_S">&nbsp;</div></td><td id="c26_5" class="tg">25.625</td><td id="c26_6" class="tw">+1 Tour</td><td id="c26_7" class="tw">+0.016</td><td><div id="c26_8" class=""></div></td></tr><tr class="tr1"><td id="c27_1" class="rk">27</td><td id="c27_2" class="nu">7</td><td id="c27_3" class="">M.Grenhagen,</td><td><div id="c27_4" class="nat_S">&nbsp;</div></td><td id="c27_5" class="tg">27.828</td><td id="c27_6" class="tw">+1 Tour</td><td id="c27_7" class="tw">+3.797</td><td><div id="c27_8" class="gs">&nbsp;</div></td></tr><tr class="tr2"><td id="c28_1" class="rk">28</td><td id="c28_2" class="nu">35</td><td id="c28_3" class="">Y.Grigorenko,</td><td><div id="c28_4" class="nat_RUS">&nbsp;</div></td><td id="c28_5" class="tg">27.328</td><td id="c28_6" class="tw">+1 Tour</td><td id="c28_7" class="tw">+1.890</td><td><div id="c28_8" class="gs">&nbsp;</div></td></tr><tr class="tr1"><td id="c29_1" class="rk">29</td><td id="c29_2" class="nu">2</td><td id="c29_3" class="">M.Zimin,</td><td><div id="c29_4" class="nat_RUS">&nbsp;</div></td><td id="c29_5" class="ty">32.312</td><td id="c29_6" class="tw">+2 Tours</td><td id="c29_7" class="tw">+1 Tour</td><td><div id="c29_8" class=""></div></td></tr><tr class="tr2"><td id="c30_1" class="rk">30</td><td id="c30_2" class="nu">17</td><td id="c30_3" class="">C.Albai,</td><td><div id="c30_4" class="nat_NL">&nbsp;</div></td><td id="c30_5" class="ty">1:01.109</td><td id="c30_6" class="tw">+9 Tours</td><td id="c30_7" class="tw">+7 Tours</td><td><div id="c30_8" class=""></div></td></tr><tr class="tr1"><td id="c31_1" class=""></td><td id="c31_2" class="nu">19</td><td id="c31_3" class="">S.Bailly,</td><td><div id="c31_4" class="nat_B">&nbsp;</div></td><td id="c31_5" class="tw"></td><td id="c31_6" class="tw"></td><td id="c31_7" class="tw"></td><td><div id="c31_8" class=""></div></td></tr><tr class="tr2"><td id="c32_1" class=""></td><td id="c32_2" class="nu">36</td><td id="c32_3" class="">J.Huttunen,</td><td><div id="c32_4" class="nat_FIN">&nbsp;</div></td><td id="c32_5" class="tw"></td><td id="c32_6" class="tw"></td><td id="c32_7" class="tw"></td><td><div id="c32_8" class=""></div></td></tr></table>
    ça m'a l'air d'être ton tableau...

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci c'est exactement la page que je cherchais!

    Par contre il va falloir que je regarde dans le code pour bien le comprendre.

    Cette adresse tu l'as trouvé comment , en regardant dans firebug? Parce que moi pas moyen de la voir.

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Il faut activer l'onglet console. Toutes les requêtes AJAX passent dessus.

  11. #11
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Je sollicite encore votre aide:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $fichier = 'http://www.vola-racing.com/circuitpro/default/update.php?dir=circuitpro:default&index=0';
     
    $texte = file_get_contents($fichier);
     
    preg_match('#<td id="c(?<rank>[^<]+)_3" class="">J.Johansson,</td>#i', $texte, $rang);
     
    echo $rang['rank'], " eme place <br><br>";
     
    preg_match('#<td id="c'.$rang['rank'].'_5 class="tg">(?<chrono>[^<]+)</td>#i', $texte, $lastchrono);
     
    echo $lastchrono['chrono'], "last chrono";
     
    ?>
    echo $rang['rank'] me retourne la bonne valeur soit 11.

    Cependant j'ai un soucis de syntaxe sur le second preg_match.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#<td id="c'.$rang['rank'].'_5 class="tg">(?<chrono>[^<]+)</td>#i', $texte, $lastchrono);
    Mon soucis vient de '.$rang['rank'].' alors ma question, quel syntaxe utiliser pour que le preg_match recherche dans mon cas ... c11_5 ...

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    je t'ai dis que pour parser du HTML c'était avec DOMDocument

    EDIT : bon par contre t'as pas de chance le fichier pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $url = 'http://www.vola-racing.com/circuitpro/default/update.php?dir=circuitpro:default&index=0';
    $data = utf8_decode(substr(file_get_contents($url), 8, -1));
     
    $doc = new DOMDocument();
    $doc->loadHTML($data);

  13. #13
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    utilise des DOMXPath pour trouver des données dans un DOMDocument

    http://php.net/manual/fr/class.domdocument.php
    http://www.php.net/manual/fr/class.domxpath.php

    Enjoy

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a moyen de faire un truc sympa en plus, en sqlite par exemple pour faire tes requêtes :


    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
    $url = 'http://www.vola-racing.com/circuitpro/default/update.php?dir=circuitpro:default&index=0';
    $data = utf8_decode(substr(file_get_contents($url), 8, -1));
     
    $doc = new DOMDocument();
    $doc->loadHTML($data);
     
    $xpath = new DOMXPath($doc);
     
    try
    {
        $dbh = new PDO("sqlite::memory:");
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
        exit($e->getMessage());
    }
     
    $dbh->query("CREATE TABLE race (clt INTEGER, num INTEGER, driver, nat, lastlap FLOAT, gap FLOAT, interval FLOAT, blank)");
    $stmt = $dbh->prepare("INSERT INTO race VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
     
    foreach($xpath->query('//tr') as $line)
    {
        $values = array();
     
        foreach ($xpath->query('td', $line) as $child)
        {        
            $values[] = $child->nodeValue;
        }
     
        $stmt->execute($values);
    }
     
    $query = $dbh->query("SELECT `num`, `driver`, `lastlap` FROM `race` ORDER BY `num` LIMIT 10");
    $query->setFetchMode(PDO::FETCH_ASSOC);
     
    echo '<table>';
     
    $row = $query->fetch();
     
    echo '<tr><th>', implode('</th><th>', array_keys($row)), '</th></tr>';
     
    do 
    {
        echo '<tr><td>', implode('</td><td>', $row), '</td></tr>';
    }
    while($row = $query->fetch());
     
    echo '</table>';

  15. #15
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Génial!
    Par contre je ne connais pas bien sqlite.

    En changeant ta ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM race where driver='J.Johansson,'
    J'arrive à obtenir toutes les informations de ce pilote. C'est ce que je recherchais.

    Cependant, comment faire pour obtenir indépendamment chaque valeur pour les disposer à l'endroit que je souhaite dans une page web?

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Vroom06 Voir le message
    Génial!
    Par contre je ne connais pas bien sqlite.

    En changeant ta ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM race where driver='J.Johansson,'
    J'arrive à obtenir toutes les informations de ce pilote. C'est ce que je recherchais.

    Cependant, comment faire pour obtenir indépendamment chaque valeur pour les disposer à l'endroit que je souhaite dans une page web?
    ca dépend de la présentation

  17. #17
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Cette page sera destinée à être affichée sur un iphone durant une course de karting de 24h. Le pilote pourra avoir en temps réel sa place, son temps et son eccart par rapport au pilote suivant (en absolu et la différence par rapport à son chrono.

    Pour la présentation je souhaiterais obtenir grosso-modo un résultat comme dans l'image ci-jointe.
    Donc il me faudrait pouvoir dissocier les résultats à afficher.
    Images attachées Images attachées  

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    oki, ca va être facile alors, mais t'a jamais utilise le sql en PHP ?

  19. #19
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Malheureusement non. J'ai quelques petites connaissances sur les bdd seulement. Ce n'est pas suffisant.

    Là j'arrive à afficher un résultat de toutes les informations d'un kart sur une même ligne.
    Mais je ne connais pas la fonction qui permet de récupérer une seule valeur dans ce résultat.

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Vroom06 Voir le message
    Malheureusement non. J'ai quelques petites connaissances sur les bdd seulement. Ce n'est pas suffisant.

    Là j'arrive à afficher un résultat de toutes les informations d'un kart sur une même ligne.
    Mais je ne connais pas la fonction qui permet de récupérer une seule valeur dans ce résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query  = $dbh->query("SELECT * FROM `race` WHERE `driver`='J.Johansson,' LIMIT 1");
    $driver = $query->fetchObject();
     
    //par exemple
    echo $driver->lastlap;

Discussions similaires

  1. Récupérer les données (tableau) d'une page web
    Par Invité dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 08/10/2014, 10h06
  2. [Débutant] Exporter des données C# Sur une page Web
    Par massilia68 dans le forum C#
    Réponses: 3
    Dernier message: 16/10/2013, 01h05
  3. Importer des données venant d'une page web protégé
    Par guismoman60 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2013, 15h44
  4. Réponses: 2
    Dernier message: 14/05/2007, 10h40
  5. Récupérer le code source d'une page web
    Par glRaZ dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/12/2004, 10h16

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