Bonjour à tous,
Je suis clairement une tanche en PHP ... mais je connaios suffisament asp pour pouvoir piger quelques trucs.
Mon pbm, je parse une page html pour récup certaines valeurs (il s'agit d'une balise meteo publique).
Voici un peu de code de cette page
Ce qui évidemment ne marche pas ... j'imagine que c'est tout bete, mais je ne maitrise pas !
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145 <div class="Info"> <div class="Titre">Relevé du 09/03/2009 - 11:54</div> <div class="Data"> <table> <tr><th colspan="2">Vent</th></tr> <tr><td class="soustitre" Colspan="2"><b>Vent moyen (sur 5 min)</b></td></tr> <tr> <td class="label">Direction :</td><td class="valeur"> N - 0° </td> </tr> <tr> <td class="label">Vitesse :</td><td class="valeur"> 2 km/h </td> </tr> <tr><td> </td></tr> <tr><td class="soustitre" Colspan="2"><b>Vent maxi sur l'heure précédente</b></td></tr> <tr> <td class="label">Direction :</td><td class="valeur"> SE - 135° </td> </tr> <tr> <td class="label">Vitesse :</td><td class="valeur"> 15 km/h </td> </tr> <tr><td> </td></tr> <tr><td class="soustitre" Colspan="2"><b>Vent mini sur l'heure précédente</b></td></tr> <tr><td class="label">Vitesse minimum :</td> <td class="valeur"> 0 km/h </td> </tr> <!-- <tr><td class="label">Vitesse maxi au cours de <br>l'heure précédente :</td> <td class="valeur">km/h</td> --> </tr> <tr><td colspan="2"> </td></tr> <tr><td class="soustitre" Colspan="2"><b>Autre</b></td></tr> <tr> <td class="label">Température :</td><td class="valeur"> 2 °C </td> </tr> </table> <p>Relevé mis à jour toutes les <strong>20 minutes.</strong></p> </div> <div class="GraphVent"> <img alt="Graph du vent non disponible" src="./graphs/graph_vent.php?idBalise=61"> </div> <input class="action" type="button" value="Visualiser l'historique" onClick="document.location.href='./balise_histo.php?idBalise=61'"> </div> <div class="Info"> <div class="Titre">Informations balise</div> <div class="Data"> <table> <tr><th colspan="2">Position</th></tr> <tr><td class="label">Nom :</td><td>St Hilaire du Touvet</td></tr> <tr><td class="label">Altitude :</td><td>0m</td></tr> <tr><td class="label">GPS :</td><td></td></tr> <tr><td class="label">Remarques :</td><td style="text-align: justify;">Aucune</td></tr> <tr><td class="label" colspan="2"> </td></tr> [/QUOTE] On trouve des balises td class="label" et td class="valeur" que je voudrais récupérer. J'ai donc fait (ou plutôt adapté): [QUOTE] <?php include_once('../../simple_html_dom.php'); function scraping($url) { // create HTML DOM $html = file_get_html($url); // get title $ret['Titre'] = $html->find('div[class="Titre"]', 0)->innertext; // get rating $ret['Rating'] = $html->find('td[class="soustitre"] b', 0)->innertext; // ICI CREATION D UNE BOUCLE NECESSAIRE // get label_1 $ret['label_1'] = $html->find('td[class="label"]', 0)->innertext; // get valeur_1 $ret['valeur_1'] = $html->find('td[class="valeur"]', 0)->innertext; // DOUBLON // get label_2 $ret['label_2'] = $html->find('td[class="label"]', 0)->innertext; // get valeur_2 $ret['valeur_2'] = $html->find('td[class="valeur"]', 0)->innertext; // LA BOUCLE // get label foreach($html->find('td') as $div) { if($div->find('label', 0)->innertext=='Label :') return $ret; $key = ''; $val = ''; foreach($div->find('Label') as $node) { if ($node->tag=='h5') $key = $node->plaintext; if ($node->tag=='valeur' && $node->plaintext!='valeur') $val .= $node->plaintext; } $ret[$key] = $val; } // clean up memory $html->clear(); unset($html); return $ret; } // ----------------------------------------------------------------------------- // test it! $ret = scraping('http://www.balisemeteo.com/balise.php?idBalise=61'); foreach($ret as $k=>$v) echo '<strong>'.$k.' </strong> : '.$v.'<br>'; ?>
Si quelqu'un pouvait m'expliquer le pbm ou me filer un pti coup de pouce, ce serait top !
Merci bcp
Partager