Bonjour,
Voila plusieurs heures que je test dans tout les sens et je commence a désespéré, je m'en remet donc au pro et me décide a poster.
Je vous explique le problème :
Je dois extraire la liste des adresses de toute les fromagers de france, pour ca j'utilise ce site :
http://www.fromagersdefrance.com/fr/
La fonction de recherche est assez simple, lorsqu'on fait une recherche, on récupère une url comme ca :
http://www.fromagersdefrance.com/fr/...l_rech.asp?CP=37000&Dept=&Ville=&Service=&Etendue=
CP étant le code postal.
La fonction pour générer toute les url des codes postaux est déjà faite.
Le problème étant au moment de récupérer la liste, ça n'a pourtant pas l'air compliquer, lors d'exemple, de tests tout ce passe bien mais au moment de tester sur un cas concret, ca bloque.
Prenons l'exemple de cette url : http://www.fromagersdefrance.com/fr/...vice=&Etendue=
Il y a 8 fromagers, ils sont tous sous cette forme :
J'ai donc essayé avec ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <td width="540" valign="top"> <p><font size="2"><b> NOM<br> Adresse<br>CP VILLE<br> </b></font></p> </td>
A chaque fois je ne les récupère pas tous ou sinon ils sont 2 dans un même tableau..
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 <?php function http_fetch_url($url, $timeout = 10, $userpwd = ''){ // recupère le code source d'une page et le met dans $data $ch = curl_init($url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch,CURLOPT_REFERER,""); if ($userpwd) { curl_setopt($ch, CURLOPT_USERPWD, $userpwd); } $data = curl_exec($ch); curl_close($ch); return $data; } function supprimelien($texte){ // fonction pour supprimer les liens, ils ne me servent a rien $motif='`<a[^>]+?>(.*?)</a>`'; $sortie=''; return $texte=preg_replace($motif,$sortie,$texte); } $test = http_fetch_url($url); // je stock le code html dans $test $test = preg_replace('/\s\s+/', '', $test); // je supprime tout les espaces (plus simple pour preg_match_all) $test = supprimelien($test); // les liens ne me servent pas //echo $test; if(!@eregi("Il n'y a aucun résultat pour votre recherche",$test)){ // si il y a bien des fromagers // et la j'ai testé toute les methodes suivante mais aucune ne marche //preg_match_all("/\<td valign=\"top\" width=\"540\">\<p\>(.*)\<\/td\>/" , $test, $tab); //preg_match_all("/\<tr\>(.*)\<\/tr\>/" , $test, $tab); //preg_match_all("/\<tr\>(.*)\<\/tr\>/" , $test, $tab); preg_match_all("/\<font size=\"2\"\>\<b\>(.*)\<\/b\>\<\/font\>\<\/p\>\<\/td\>\<\/tr\>/" , $test, $tab); echo "<pre>"; print_r($tab); echo "</pre>"; ?>
bref.. il y a un truc que je dois louper...
Si quelqu'un peut m'aiguiller..
J'ai mis la source pour que vous puissiez juste c/c pour tester
Une idée ? une piste ? une solution ?![]()
Partager