comment puis je récupérer le contenu d'un site web (e-commerce) avec curl
comment puis je récupérer le contenu d'un site web (e-commerce) avec curl
Sans curl avec file_get_contents() par exemple.
j'ai essayer ce code mais ca ne fonctionne pas pourriez vous m'aider merci
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 <?php //La page qu'on veut utiliser $wikipediaURL = 'http://www.rebuy.fr/vendre/mobile/'; //On initialise cURL $ch = curl_init(); //On lui transmet la variable qui contient l'URL curl_setopt($ch, CURLOPT_URL, $rebuyURL); //On lui demdande de nous retourner la page curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //On exécute notre requête et met le résultat dans une variable $resultat = curl_exec($ch); //On ferme la connexion cURL curl_close($ch); //On crée un nouveau document DOMDocument $rebuyPage = new DOMDocument(); //On y charge le contenu qu'on a récupéré avec cURL $rebuyPage->loadHTML($resultat); //On parcourt les balises <div> foreach($rebuyPage->getElementsByTagName('div') as $div){ //Si l'id de la page est bodyContent if($div->getAttribute('id') == <bodyContent>){ //On met le contenu du premier <p> dans une variable $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue); //Si le premier <p> est vide ou ne contient pas du texte while($premierP == '<br>' || $premierP == '<br />' || $premierP == ''){ //On le supprime $div->removeChild($div->getElementsByTagName('p')->item(0)); //Et on passe au <p> suivant $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue); }; //Un try pour éviter les messages d'erreur try{ //On parcourt toutes les tables foreach( $div->getElementsByTagName('table') as $table ){ //Et on les supprime $div->removeChild($table); } } catch(Exception $e){ } //On récupère le contenu de la fameuse balise <p> dans une variable $description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>'; } } //On affiche de résultat echo $description; ?>
En fait non. Dans la théorie, ca marche aussi bien.
Dans la pratique, une requête avec file_get_contents n'envoie pas certains headers (ex : l'user-agent) et ne gère pas les cookies; ca pose problème sur certains site, et au final mieux vaut utiliser curl ou guzzle, plutot que de rajouter des fonctionnalités manquantes à file_get_contents().
Par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php $test = file_get_contents(str_replace('-','r','http://www.ca--efou-.f-/')); // remplacer - par r echo htmlentities($test); // ne donne pas le résultat attenduca ne fonctionne pas
Affiche les erreurs, tu verras ce genre de problème en 30 secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $wikipediaURL = 'http://www.rebuy.fr/vendre/mobile/'; //On initialise cURL $ch = curl_init(); //On lui transmet la variable qui contient l'URL curl_setopt($ch, CURLOPT_URL, $rebuyURL); // $wikipediaURL ou $rebuyURL ? ... if($div->getAttribute('id') == <bodyContent>){ // manque des '
Merci pour votre réponse
je ne vois pas ou ca manque le (')
if($div->getAttribute('id') == <bodyContent>){
En gros tu parcours tous les <div> pour trouver <div id="bodyContent">. Dans ton code bodyContent est sensé être une chaîne de caractères, donc il faut des apostrophes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 foreach($rebuyPage->getElementsByTagName('div') as $div){ //Si l'id de la page est bodyContent if($div->getAttribute('id') == <bodyContent>){
Le code que tu as trouvé pour extraire les infos d'une page web est assez moche. Regarde plutot du coté de xpath/xquery.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 //Si l'id de la div (pas de la page) est bodyContent if($div->getAttribute('id') == 'bodyContent'>){ // ca marchera mieux; ou pas, vu que dans le code source de la page que tu récupère il n'y a pas bodycontent.
j'ai essayé avec ce code mais ,ca ne marche 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 <?php // Initialiser cURL $curl = curl_init(); // Définir l'adresse à ouvrir curl_setopt($curl, CURLOPT_URL, "https://www.reBuy.fr/vendre/"); // Suivre les redirections s'il y en a @curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // Exécuter $result = curl_exec($curl); // Fermer pour libérer des ressources systèmes curl_close($curl); // Afficher le code source de la page echo htmlentities($result); $id = 1001 ; while ($id <20000) { $adresse = "https://www.reBuy.fr/vendre/detail_ese.asp?ID=$id" ; // adresse de la page à exploiter $page = @file_get_contents ($adresse); // récupérer le contenu de la page echo "$page <br>"; // affiche la page $id++ ; // $id = $id + 1 } ?> [/php] [php] <?php $id = 135 ; while ($id < 20000) { $adresse = "https://www.reBuy.fr/vendre//detail_ese.asp?ID=$id" ; // adresse de la page à exploiter $page = @file_get_contents ($adresse); // récupérer le contenu de la page echo "$page <br>"; // affiche la page $id++ ; // $id = $id + 1 } ?>
Partager