Analyse HTML en PHP : aperçu des bibliothèques et outils
L'analyse HTML est l'une des tâches fréquentes du développeur web. Qu'il s'agisse d'extraire des données d'un site tiers (scraping), d'analyser ses propres pages ou d'automatiser les tests, un outil fiable est indispensable. PHP, en tant que langage serveur, offre plusieurs façons de travailler avec le code HTML. Dans cet article, nous examinerons les trois bibliothèques les plus populaires : PHP Simple HTML DOM Parser, DiDOM et Symfony DomCrawler. Vous découvrirez leurs fonctionnalités, leurs forces et faiblesses, ainsi que des exemples de code.
Pourquoi analyser HTML ?
Les fonctions intégrées de PHP (file_get_contents, preg_match) sont trop primitives pour des tâches complexes. Les expressions régulières deviennent rapidement lourdes et se cassent au moindre changement de structure HTML. Les bibliothèques spécialisées permettent de :
- Accéder aux éléments via des sélecteurs CSS ou XPath ;
- Parcourir l'arbre DOM comme en JavaScript ;
- Extraire du texte, des attributs, des liens ;
- Modifier le HTML et enregistrer le résultat.
1. PHP Simple HTML DOM Parser
L'une des bibliothèques les plus anciennes et les plus connues. Fonctionne sans dépendances externes, compatible avec PHP 5.6+. Son principal avantage est une syntaxe intuitive rappelant jQuery.
Installation
// Téléchargez le fichier simple_html_dom.php depuis GitHubrequire_once 'simple_html_dom.php';Exemple d'utilisation
// Créer un objet DOM à partir d'une URL$html = file_get_html('https://example.com');
// Trouver tous les liensforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}
// Extraire le titre h1$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'Titre non trouvé';
// Nettoyer la mémoire$html->clear();Avantages et inconvénients
- + Simplicité et API intuitive ;
- + Ne nécessite pas Composer ;
- - Lent avec les grands documents ;
- - Projet non mis à jour depuis longtemps ;
- - Ne supporte pas entièrement les normes modernes PHP 8.x.
2. DiDOM
Bibliothèque moderne, activement maintenue par la communauté. Entièrement compatible avec PHP 7.4–8.3. Utilise les sélecteurs CSS et XPath, fonctionne beaucoup plus rapidement que Simple HTML DOM.
Installation via Composer
composer require imangazaliev/didomExemple d'utilisation
use DiDom\\Document;
$document = new Document('https://example.com', true);
// Recherche de tous les liens$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}
// Recherche par classe$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}
// Extraction du premier élément$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'Aucun titre';Avantages et inconvénients
- + Haute performance ;
- + Support des sélecteurs CSS de toute complexité ;
- + Gestion des encodages ;
- - Nécessite Composer ;
- - Documentation en russe disponible, mais fragmentaire.
3. Symfony DomCrawler
Partie de l'écosystème Symfony, mais peut être utilisée comme bibliothèque autonome. Fournit une API puissante pour naviguer dans le DOM, extraire des données et travailler avec des formulaires.
Installation
composer require symfony/dom-crawlercomposer require symfony/css-selector // pour les sélecteurs CSSExemple d'utilisation
use Symfony\\Component\\DomCrawler\\Crawler;
$html = file_get_contents('https://example.com');$crawler = new Crawler($ Aussi dans la bibliothèque
Travailler avec S3 et les stockages cloud en JavaScript (Node.js) — la bibliothèque @aws-sdk/client-s3
Génération de rapports PDF en Swift : PDFKit et UIPrintPageRenderer
Navigation Component Kotlin : guide complet avec exemples
Files d'attente de tâches pour PHP : RabbitMQ, Gearman et PhpAmqpLib
Programmation réactive en TypeScript : la bibliothèque RxJS