HTML-Parsing in PHP: Überblick über Bibliotheken und Werkzeuge
HTML-Parsing ist eine der häufigen Aufgaben eines Webentwicklers. Ob es um das Extrahieren von Daten von einer fremden Website (Scraping), die Analyse eigener Seiten oder die Automatisierung von Tests geht – ohne ein zuverlässiges Werkzeug kommt man nicht aus. PHP als serverseitige Sprache bietet mehrere Möglichkeiten, mit HTML-Code zu arbeiten. In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken: PHP Simple HTML DOM Parser, DiDOM und Symfony DomCrawler. Sie erfahren deren Fähigkeiten, Stärken und Schwächen und sehen Codebeispiele.
Wozu braucht man HTML-Parsing?
Die integrierten PHP-Funktionen (file_get_contents, preg_match) sind für komplexe Aufgaben zu primitiv. Reguläre Ausdrücke werden schnell unhandlich und brechen bei der geringsten Änderung der HTML-Struktur. Spezialisierte Bibliotheken ermöglichen:
- Zugriff auf Elemente über CSS-Selektoren oder XPath;
- Durchlaufen des DOM-Baums wie in JavaScript;
- Extrahieren von Text, Attributen, Links;
- Modifizieren von HTML und Speichern des Ergebnisses.
1. PHP Simple HTML DOM Parser
Eine der ältesten und bekanntesten Bibliotheken. Arbeitet ohne externe Abhängigkeiten, geeignet für PHP 5.6+. Ihr Hauptvorteil ist die intuitive Syntax, die an jQuery erinnert.
Installation
// Laden Sie die Datei simple_html_dom.php von GitHub herunterrequire_once 'simple_html_dom.php';Anwendungsbeispiel
// DOM-Objekt aus einer URL erstellen$html = file_get_html('https://example.com');
// Alle Links findenforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}
// h1-Überschrift extrahieren$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'Überschrift nicht gefunden';
// Speicher freigeben$html->clear();Vor- und Nachteile
- + Einfachheit und verständliche API;
- + Benötigt kein Composer;
- - Langsame Verarbeitung großer Dokumente;
- - Projekt wurde lange nicht aktualisiert;
- - Unterstützt moderne PHP 8.x-Standards nicht vollständig.
2. DiDOM
Moderne Bibliothek, aktiv von der Community unterstützt. Vollständig kompatibel mit PHP 7.4–8.3. Verwendet CSS-Selektoren und XPath, arbeitet um ein Vielfaches schneller als Simple HTML DOM.
Installation über Composer
composer require imangazaliev/didomAnwendungsbeispiel
use DiDom\\Document;
$document = new Document('https://example.com', true);
// Alle Links finden$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}
// Suche nach Klasse$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}
// Erstes Element extrahieren$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'Keine Überschriften';Vor- und Nachteile
- + Hohe Leistung;
- + Unterstützung für CSS-Selektoren jeder Komplexität;
- + Arbeit mit Kodierungen;
- - Erfordert Composer;
- - Dokumentation auf Russisch vorhanden, aber fragmentarisch.
3. Symfony DomCrawler
Teil des Symfony-Ökosystems, kann aber als eigenständige Bibliothek verwendet werden. Bietet eine leistungsstarke API für die Navigation im DOM, Datenextraktion und Arbeit mit Formularen.
Installation
composer require symfony/dom-crawlercomposer require symfony/css-selector // für CSS-SelektorenAnwendungsbeispiel
use Symfony\\Component\\DomCrawler\\Crawler;
$html = file_get_contents('https://example.com');$crawler = new Crawler($ Auch in der Bibliothek
Rate Limiting in TypeScript: Bibliotheken, Strategien und Beispiele
HTML-Parsing in Rust: Bibliotheken und Beispiele für Web Scraping
MapKit für Swift: Komplettleitfaden mit Beispielen
Arbeiten mit XML in Go (Golang): Paket encoding/xml und Alternativen
Detekt für Kotlin: Vollständiges Tutorial mit Beispielen