Parsing et scraping de données en PHP : du simple au professionnel

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi PHP est un outil idéal pour le parsing

\n\n

Quand on parle de parsing de sites, beaucoup pensent immédiatement à Python avec son BeautifulSoup ou Scrapy. Mais soyons honnêtes : PHP est présent sur un serveur sur deux, et si votre projet est déjà en PHP — ajouter toute une stack Python pour une seule tâche de parsing n'est tout simplement pas rationnel. PHP gère très bien la collecte de données, surtout quand il faut traiter rapidement du HTML ou du JSON, interroger une API ou extraire le contenu d'une dizaine de pages.

\n\n

Sur le site pythonlib.ru, nous avons l'habitude de parler de Python, mais aujourd'hui nous faisons une exception. Car PHP n'est pas seulement un langage pour les « sites vitrines ». C'est un outil puissant pour le web scraping, capable de travailler avec cURL, DOMDocument, XPath et même d'imiter le comportement d'un navigateur. Dans cet article, nous allons voir avec des exemples concrets comment scraper des sites en PHP, éviter les blocages et gérer le contenu dynamique.

\n\n

Si vous avez déjà voulu collecter automatiquement les prix des concurrents, des actualités ou des contacts — vous êtes au bon endroit. C'est parti !

\n\n

Parsing et scraping : quelle différence ?

\n\n

Avant d'écrire du code, clarifions les termes. Le parsing de données en PHP est le processus d'extraction d'informations structurées à partir de HTML, XML ou JSON. Quant au scraping de données en PHP, c'est un concept plus large qui inclut le téléchargement de la page, le contournement des protections et l'extraction des données. En termes simples : le parsing, c'est la « lecture », et le scraping, c'est l'« extraction ».

\n\n

En PHP, pour le scraping, nous aurons besoin de deux outils principaux :

\n
    \n
  • cURL — pour envoyer des requêtes HTTP et recevoir les réponses du serveur
  • \n
  • DOMDocument ou SimpleXML — pour analyser le HTML/XML reçu
  • \n
\n\n

On peut également utiliser des bibliothèques (nous en reparlerons plus tard), mais pour commencer, les fonctions intégrées suffisent.

\n\n

Installation et préparation de l'environnement

\n\n

Pour travailler, vous aurez besoin de PHP version 7.4 ou supérieure avec les extensions curl et dom. Vous pouvez vérifier leur présence ainsi :

\n\n
php -m | grep -E "curl|dom"
\n\n

Si la sortie est vide — installez-les via le gestionnaire de paquets :

\n\n
sudo apt install php-curl php-xml
\n\n

Tout est prêt. Créons maintenant notre premier script pour le parsing d'un site.

\n\n

Exemple 1 : Parsing simple avec cURL et DOMDocument

\n\n

Supposons que nous voulions collecter les titres d'articles d'un blog. Écrivons un code simple mais fonctionnel :

\n\n
<?php\n// URL à parser\n$url = 'https://example-blog.com';\n\n// Initialisation de cURL\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);\ncurl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');\n\n$html = curl_exec($ch);\ncurl_close($ch);\n\n// Création d'un DOMDocument et chargement du HTML\n$dom = new DOMDocument();\nlibxml_use_internal_errors(true); // Ignorer les erreurs de parsing HTML\n$dom->loadHTML($html);\nlibxml_clear_errors();\n\n// Utilisation de XPath pour rechercher les titres h2\n$xpath = new DOMXPath($dom);\n$titles = $xpath->query('//h2');\n\nforeach ($titles as $title) {\n    echo $title->nodeValue . "\\n";\n}\n?>
\n\n

Notez que nous avons défini un User-Agent — c'est une protection minimale contre le blocage. Sans cela, les sites renvoient souvent une erreur 403. Nous utilisons également CURLOPT_FOLLOWLOCATION pour suivre automatiquement les redirections.

\n\n

Exemple 2 : Travail avec les formulaires et les requêtes POST

\n\n

Les données sont souvent cachées derrière un formulaire de recherche ou une authentification. Le parsing en PHP permet d'émuler l'envoi d'un formulaire :

\n\n
<?php\n$url = 'https://example.com/search';\n$postData = http_build_query([\n    'query' => 'PHP scraping',\n    'submit' => 'Search'\n]);\n\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_POST, true);\ncurl_setopt($ch, CURLOPT_POSTFIELDS,                

Blogs

Book Recommendations