HTML-Parsing in PHP: Überblick über Bibliotheken und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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/didom


Anwendungsbeispiel

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-Selektoren


Anwendungsbeispiel

use Symfony\\Component\\DomCrawler\\Crawler;

$html = file_get_contents('https://example.com');$crawler = new Crawler($

Empfehlungen