Accueil > Tutoriels pour Webmasters > [cURL] Lire le contenu d'une page

[cURL] Lire le contenu d'une page

Le langage PHP dispose de cURL pour ouvrir facilement une page web et en extraire son contenu. Extraire le contenu d'une page peut être utile pour diverses raisons:

  • faire une copie de ses pages web
  • faire un crawler (comme les moteurs de recherche)
  • extraire le contenu d'une page (utilisé par certains agrégateurs de contenu)

Ce tutoriel va expliquer comment extraire le code source d'une page. Il ne dépend qu'à vous d'en faire l'usage que vous souhaitez (pour l'enregistrer dans une base de données par exemple).

Prérequis

Il est important de savoir que juridiquement (ou au moins du point de vue de l'éthique) vous devez tout de même faire attention à ce que vous ferez des données récoltées.

Par ailleurs, pour réalisé ce tutoriel il faut des connaissances de bases en PHP. Vous pouvez combler quelques bases à l'aide de la lecture de ces deux tutoriels:

Code PHP

Le code PHP ci-dessous permet d'extraire le contenu de la page de votre choix (remplacer pour cela la valeur http://www.example.com).

  1. <?php
  2. // Initialiser cURL
  3. $curl = curl_init();
  4. // Définir l'adresse à ouvrir
  5. curl_setopt($curl, CURLOPT_URL, "http://www.example.com/");
  6. // Suivre les redirections s'il y en a
  7. @curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  8. // Exécuter
  9. $result = curl_exec($curl);
  10. // Fermer pour libérer des ressources systèmes
  11. curl_close($curl);
  12. // Afficher le code source de la page
  13. echo htmlentities($result);
  14. ?>

La variable la plus importante dans ce code est $result, car c'est cette variable qui contient exactement le code source de la page ouverte via cURL. Pour faire un crawler, il est par exemple possible d'extraire tous les liens HTML présent dans cette variable puis d'ouvrir avec cURL une autre page et de recommencer le procédé pour chaque nouveau lien.

Il est judicieux de savoir que si la page concerné utilise une redirection (par exemple une redirection 301), alors ce code extraira le contenu à partir de la page de destination. Par ailleurs, il conviens de savoir qu'il y a des paramètres particulier à utiliser si vous vous connecté via un proxy ou si vous souhaitez extraire le contenu d'une page dont l'URL commence par "https".