Einleitung: Warum PHP das ideale Werkzeug für Parsing ist
\n\nWenn wir über das Parsen von Websites sprechen, denken viele sofort an Python mit seinem BeautifulSoup oder Scrapy. Aber seien wir ehrlich: PHP lebt auf jedem zweiten Server, und wenn Ihr Projekt bereits auf PHP basiert, ist es einfach nicht sinnvoll, für eine einzige Parsing-Aufgabe einen ganzen Python-Stack mitzuschleppen. PHP meistert die Datensammlung hervorragend, besonders wenn Sie schnell HTML oder JSON verarbeiten, über eine API gehen oder Inhalte von einem Dutzend Seiten abrufen müssen.
\n\nAuf der Website pythonlib.ru sprechen wir normalerweise über Python, aber heute machen wir eine Ausnahme. Denn PHP ist nicht nur eine Sprache für „Visitenkarten-Websites“. Es ist ein leistungsstarkes Werkzeug für Web Scraping, das mit cURL, DOMDocument, XPath arbeiten und sogar das Browserverhalten imitieren kann. In diesem Artikel werden wir anhand realer Beispiele analysieren, wie man Websites mit PHP parst, Blockaden vermeidet und dynamische Inhalte verarbeitet.
\n\nWenn Sie jemals automatisch Preise von Wettbewerbern, Nachrichten oder Kontaktdaten sammeln wollten, sind Sie hier genau richtig. Los geht's!
\n\nParsing und Scraping: Was ist der Unterschied?
\n\nBevor wir Code schreiben, klären wir die Begriffe. Datenparsing mit PHP ist der Prozess der Extraktion strukturierter Informationen aus HTML, XML oder JSON. Daten-Scraping mit PHP ist ein breiterer Begriff, der das Herunterladen der Seite, das Umgehen von Schutzmaßnahmen und das Extrahieren von Daten umfasst. Einfach ausgedrückt: Parsing ist „Lesen“, Scraping ist „Gewinnen“.
\n\nIn PHP benötigen wir für das Scraping zwei Hauptwerkzeuge:
\n- \n
- cURL – zum Senden von HTTP-Anfragen und Empfangen von Antworten vom Server \n
- DOMDocument oder SimpleXML – zum Parsen des empfangenen HTML/XML \n
Zusätzlich können Bibliotheken verwendet werden (dazu später mehr), aber für den Anfang reichen die integrierten Funktionen aus.
\n\nInstallation und Vorbereitung der Umgebung
\n\nFür die Arbeit benötigen Sie PHP Version 7.4 oder höher mit den Erweiterungen curl und dom. Überprüfen Sie deren Verfügbarkeit wie folgt:
php -m | grep -E "curl|dom"\n\nWenn die Ausgabe leer ist, installieren Sie sie über den Paketmanager:
\n\nsudo apt install php-curl php-xml\n\nAlles ist bereit. Jetzt erstellen wir unser erstes Skript zum Parsen einer Website.
\n\nBeispiel 1: Einfaches Parsing mit cURL und DOMDocument
\n\nAngenommen, wir möchten die Artikelüberschriften eines Blogs sammeln. Schreiben wir einen einfachen, aber funktionierenden Code:
\n\n<?php\n// URL zum Parsen\n$url = 'https://example-blog.com';\n\n// cURL initialisieren\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// DOMDocument erstellen und HTML laden\n$dom = new DOMDocument();\nlibxml_use_internal_errors(true); // HTML-Parsing-Fehler ignorieren\n$dom->loadHTML($html);\nlibxml_clear_errors();\n\n// XPath verwenden, um h2-Überschriften zu finden\n$xpath = new DOMXPath($dom);\n$titles = $xpath->query('//h2');\n\nforeach ($titles as $title) {\n echo $title->nodeValue . "\\n";\n}\n?>\n\nBeachten Sie: Wir haben einen User-Agent gesetzt – das ist ein minimaler Schutz vor Blockaden. Ohne diesen geben Websites oft einen 403-Fehler zurück. Außerdem verwenden wir CURLOPT_FOLLOWLOCATION für die automatische Weiterleitung bei Redirects.
Beispiel 2: Arbeiten mit Formularen und POST-Anfragen
\n\nOft sind Daten hinter einem Suchformular oder einer Anmeldung verborgen. Parsing mit PHP ermöglicht die Emulation des Absendens eines Formulars:
\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,