Advertisement
Guest User

Tutoriel: Récupérer le contenu d'une page web avec cURL - www.dinduks.com

a guest
Feb 3rd, 2011
5,966
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.21 KB | None | 0 0
  1. <?php
  2.  
  3. //La page qu'on veut utiliser
  4. $wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth';
  5.  
  6. //On initialise cURL
  7. $ch = curl_init();
  8. //On lui transmet la variable qui contient l'URL
  9. curl_setopt($ch, CURLOPT_URL, $wikipediaURL);
  10. //On lui demdande de nous retourner la page
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. //On envoie un user-agent pour ne pas être considéré comme un bot malicieux
  13. curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com');
  14. //On exécute notre requête et met le résultat dans une variable
  15. $resultat = curl_exec($ch);
  16. //On ferme la connexion cURL
  17. curl_close($ch);
  18.  
  19. //On crée un nouveau document DOMDocument
  20. $wikipediaPage = new DOMDocument();
  21. //On y charge le contenu qu'on a récupéré avec cURL
  22. $wikipediaPage->loadHTML($resultat);
  23.  
  24. //On parcourt les balises <div>
  25. foreach($wikipediaPage->getElementsByTagName('div') as $div){
  26.     //Si l'id de la page est bodyContent
  27.     if($div->getAttribute('id') == "bodyContent"){
  28.  
  29.         //On met le contenu du premier <p> dans une variable
  30.         $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
  31.         //Si le premier <p> est vide ou ne contient pas du texte
  32.         while($premierP == '<br>' || $premierP == '<br />' || $premierP == ''){
  33.             //On le supprime
  34.             $div->removeChild($div->getElementsByTagName('p')->item(0));
  35.             //Et on passe au <p> suivant
  36.             $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
  37.         };
  38.  
  39.         //Un joli try pour éviter les messages d'erreur
  40.         try{
  41.             //On parcourt toutes les tables
  42.             foreach( $div->getElementsByTagName('table') as $table ){
  43.                 //Et on les supprime
  44.                 $div->removeChild($table);
  45.             }
  46.         } catch(Exception $e){
  47.             //On censure :P
  48.         }
  49.  
  50.         //On récupère le contenu de la fameuse balise <p> dans une variable
  51.         $description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>';
  52.     }
  53. }
  54.  
  55. //On enlève la syntaxe propre à Wikipedia
  56. $description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description);
  57.  
  58. //On affiche de résultat
  59. echo $description;
  60.  
  61. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement