Web Scraping mit PHP: eine Schritt-für-Schritt-Anleitung

Lernen Sie, wie Sie Ihren eigenen einfachen Web Scraper in PHP von Grund auf erstellen und programmieren können.
Web scraping with PHP
Daniel Shashko - SEO
Daniel Shashko | SEO Specialist
04-Sep-2022

PHP (Hypertext Preprocessor) ist eine Skriptsprache für die Webentwicklung, die für das Sammeln von Webdaten verwendet werden kann. In diesem Beitrag gehen wir auf Folgendes ein:

Gründe für die Verwendung von PHP

PHP ist derzeit für ca. 40 % des Webs verantwortlich, darunter Websites wie WordPress, Slack und Facebook. Es ist eine der beliebtesten serverseitigen Skriptsprachen, wenn es um Webentwicklung geht. Die Datenbanken von MySQL sind eng miteinander verwandt. Es ist eine relativ einfach zu erlernende Sprache mit guter Dokumentation und Bibliotheken, die die Entwicklungszeit verkürzen können.

Erste Schritte mit PHP

In diesem Leitfaden wird eine Methode des manuellen Web Scraping vorgestellt, bei der Sie einen Bot an einen Webserver senden und Daten mit PHP als grundlegender Programmiersprache sammeln. Dies steht im Gegensatz zur Verwendung eines vollautomatischen Datenerfassungstools, das den Prozess vereinfachen und optimieren kann.

Der Web Scraper funktioniert, indem er eine HTTP-Anfrage an den Server sendet und dann den Code der Website sammelt. Wir werden Ihnen dann zeigen, wie Sie die abgerufenen Informationen auswerten können.

Hier ist ein Beispiel für einen Code-Ausschnitt, der in der Überschrift einer Website erscheinen kann, die Sie scrapen möchten:

<html><body><h1>This is a heading!</h1></body></html>

Nach dem Abruf muss dieser Code geparst werden, damit der Text von menschlichen Analytikern gelesen und verstanden werden kann. In diesem Beispiel erhalten Sie nach dem Parsen den folgenden reinen Text:

‘This is a heading!’

Bevor Sie beginnen, stellen Sie sicher, dass Sie PHP auf Ihrem Computer installiert haben.

Web Scraping mit PHP in 3 einfachen Schritten

Erster Schritt: Erfassen des Codes Ihrer Ziel-Website

Beginnen Sie mit der Eingabe des folgenden Codes:

<?php
$code = file_get_contents (“http://quotes.toscrape.com”); 
?>

Zu den grundlegenden Regeln der Kodierung:

  • „<?php“ und „?>“ werden in der gesamten PHP-Dokumentation am Anfang und am Ende von Befehlen verwendet.
  • In der zweiten Zeile wird eine Variable mit der Bezeichnung „$code“ gesetzt, die sich auf den Inhalt der betreffenden URL bezieht, die wir in diesem Beispiel ansteuern werden: “http://quotes.toscrape.com”. Dies hilft, den URL-Code in der Variablen „$code“ zu speichern.

Bevorzugen Sie eine vollautomatische Web Scraping Lösung?

Zweiter Schritt: Parsen der Webseite

Diese Aufgabe zielt darauf ab, alle Zitate von dieser Website zu sammeln:

Zitat-Text auf einer Zitat-Website

Rechtsklicken Sie auf Ihre Zielseite und klicken Sie auf „Seitenquelltext anzeigen“. Es öffnet sich ein neues Fenster mit dem Quellcode. Bei unserem Beispiel werden Sie feststellen, dass alle Zitate in -Tags mit der Klasse „text“ enthalten sind, wobei das itemprop-Attribut ebenfalls auf „text“ gesetzt ist, und zwar:

Zitat-Code-Beispiel

Wir beginnen damit, PHP zu verwenden, um den gesamten unerwünschten Text im Code zu entfernen, mit Ausnahme der Anführungszeichen in den -Tags, und ihn dann mit der Funktion „echo“ auf dem Bildschirm anzuzeigen:

<?php
$code = file_get_contents("http://quotes.toscrape.com");
$code = str_replace(">", "<>", $code);

$splitCode = explode("<", $code);

// Find the first occurance of the opening tag of the quotes: 
$openingTag = array_search('span class="text" itemprop="text"', $splitCode, true);

// Find the first occurance of the closing tag of the quotes 
$closingTag = array_search('/span', $splitCode, true);

// Now, find the text in between the tags 
$i = $openingTag;
$total = "";
while ($i < $closingTag) {
	$total = $total . $splitCode[$i];
	$i = $i + 1;
}
$final = substr($total, 37);
echo $final;
?>

In Zeile 2 werden alle Vorkommen von „>“ im Code durch „<>“ ersetzt. Dadurch kann es zusammen mit „<“ in Zeile 5 aufgespalten werden. Jetzt gibt es ein Array mit allen Tags im Code. In Zeile 8 findet unser Programm die Position des öffnenden -Tags, und in Zeile 11 die Position des schließenden -Tags.

Jetzt muss nur noch der Text zwischen diesen beiden Vorkommen abgerufen werden. Zu diesem Zweck wird eine Variable mit dem Namen „i“ erstellt, die den Wert der Variablen „opening tag“ enthält. Anschließend wird eine Variable erstellt, in die das Ergebnis später eingegeben wird. In Zeile 16 beginnt sie jeden Buchstaben nach dem öffnenden Tag in einer Schleife zu durchlaufen, addiert den Buchstaben zum Gesamtwert und erhöht dann die Variable „i“. Nach dem schließenden Tag wird die Schleife angehalten.

Anschließend werden die ersten 37 Ziffern der endgültigen Zeichenkette gelöscht, da diese ersten 37 Ziffern in dem zu analysierenden Tag, dem -Tag, enthalten sind. Schließlich wird das Endergebnis mit Hilfe der „echo-Funktion“ abgerufen.

Wenn Sie das Programm ausführen, sieht es ungefähr so aus:

“The world we have created it is a process of our thinking. It cannot be changed without changing our thinking.” 

Das ist das erste Zitat auf der Website, das wir ohne den „nicht benutzerfreundlichen“ Code auslesen.

Dritter Schritt: In einer Schleife durchlaufen

Sie haben vielleicht bemerkt, dass nur das erste Vorkommen erfasst wird und danach keines mehr. Um dies zu beheben, können wir einfach die gerade zurückgegebenen Vorkommen löschen und den Vorgang wiederholen, bis wir alle abgerufen haben. Außerdem können wir unseren Code vereinfachen, indem wir den Scraping-Prozess in eine Funktion packen, sodass er immer dann ausgeführt werden kann, wenn wir ihn brauchen. Probieren Sie diesen Code aus:

<?php 
$code = file_get_contents("http://quotes.toscrape.com");
$code = str_replace(">", "<>", $code); 

$splitCode = explode("<", $code);

function parseCode($splitCode) {
	// Find the first occurance of the opening tag of the quotes:
	$openingTag = array_search('span class="text" itemprop="text"', $splitCode, true);
	
	// Find the first occurance of the closing tag of the quotes: 
	$GLOBALS[closingTag] = array_search('/span', $splitCode, true);
	
	// Now, find the text in between the tags 
$i = $openingTag;
$total = "";
while ($i < $GLOBALS["closingTag"]) {
	$total = $total . $splitCode[$i];
	$i = $i + 1;
}
// Run the function, then update splitCode to delete the previous occurance 
// that it can be repeated for the next quote, then loop through 3 times 
// (You can change how many times):
parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);

?>

Sie haben vielleicht bemerkt, dass unser vorheriger Code in eine Funktion namens „parseCode“ eingegeben wurde, die einen Parameter namens „$splitCode“ enthält, sodass sie auf den Code zugreifen und das Ergebnis „echo“ ausgeben kann. Die Funktion „parseCode“ wird in Zeile 27 ausgeführt, und in Zeile 28 löscht unser Programm das vorherige Vorkommen des schließenden Tags, sodass es anschließend repliziert werden kann. Die Zeilen 27 und 28 werden einfach ca. 3 Mal wiederholt, damit das Programm ein Muster erkennen und das nächste Vorkommen entdecken kann.

Schließlich geben wir das schließende Tag als „globale Variable“ mit dem superglobalen Geltungsbereich „$GLOBALS“ ein, und in Zeile 21 geben wir <p>-Tags um jede zurückgegebene Zeile ein, sodass es für jedes neu analysierte Zitat eine neue Zeile erstellt. Dies ist das Ergebnis:

“The world we have created it is a process of our thinking. It cannot be changed without changing our thinking.”

“There are only two ways to live your life. One is as though nothing is a miracle. The Other is as though everything is a miracle.” 

“Try not to become a man of success. Rather become a man of value.”

Das Ergebnis ist genau das, wonach wir gesucht haben. Kein Code, nur lesbarer Text. Dieser Prozess kann für nahezu jede Zielseite repliziert werden, wie z. B. das Scrapen von eBay nach Zieldatenpunkten wie Produktpreisen, Bewertungen und SKUs (Stock Keeping Units).

Fazit

Die Verwendung von PHP zum Scrapen des Internets nach Zieldaten kann ein effektiver, wenn auch langsamer/manueller Prozess sein. Eine praktikable Alternative, die Unternehmen in Erwägung ziehen sollten, ist der Kauf gebrauchsfertiger Datensätze. Dies spart Zeit und Ressourcen und ermöglicht es Ihnen und Ihrem Team, sich voll und ganz auf den Ausbau Ihres Unternehmens, die Kundenzufriedenheit und die Produktentwicklung zu konzentrieren.

Daniel Shashko - SEO
Daniel Shashko | SEO Specialist

Daniel is an SEO specialist here at Bright Data with a B2C background. He is in charge of ensuring that businesses get exposed to articles that help them become more data-driven. He is fascinated by the intricate inner workings that the digital world is comprised of and how these can be navigated for hypergrowth.

Das könnte Sie auch interessieren

What is a web crawler featured image

Was ist ein Webcrawler?

Webcrawler sind ein wichtiger Teil der Infrastruktur des Internets. In diesem Artikel geht es um Folgendes: Webcrawler – Definition Ein Webcrawler ist ein Software-Roboter, der das Internet durchsucht und die gefundenen Daten herunterlädt. Die meisten Webcrawler werden von Suchmaschinen wie Google, Bing, Baidu und DuckDuckGo betrieben. Suchmaschinen wenden ihre Suchalgorithmen auf die gesammelten Daten […]
Search by image API hero image

Screen Scraping im Detail: Ein Leitfaden für alle in der digitalen Welt

Wenn Sie im Bereich SEO und E-Commerce tätig sind, haben Sie wahrscheinlich darüber nachgedacht, wie Sie bequem an die Daten aller Wettbewerber auf dem Markt gelangen können.
Python web scraping guide

Web Scraping mit Python – Schritt-für-Schritt-Anleitung

Lernen Sie, Web Scraping mit Python durchzuführen, um schnell Daten von mehreren Websites zu sammeln und so Zeit und Mühe zu sparen.

Die 9 größten Mythen über Web Scraping

Web Scraping hat einen schlechten Ruf, weil es für böswillige Zwecke verwendet werden kann. Aber Web Scraping kann auch für gute Zwecke eingesetzt werden! In diesem Blogbeitrag räumen wir mit einigen weit verbreiteten Mythen über Web-Scraping auf, damit Sie sehen können, wie diese Technik für gute Zwecke eingesetzt werden kann

Anleitung zum Web Scraping mit Java

Sie wissen nicht, welche unterstützenden Tools Sie herunterladen müssen, um eine ideale Java-Umgebung für die Datenerfassung zu schaffen? Ihnen ist nicht klar, wie man Datenpunkte aus HTML extrahiert/parst und dann ins CSV-Format konvertiert? Dieser Beitrag hilft Ihnen, diese Fragen zu klären.
What is alternative data

Was ist Alternative Data und wie ist es zu verwenden?

Investmenthäuser überwachen Daten aus sozialen Medien, Suchmaschinen sowie Daten über die Verbrauchernachfrage und erhalten Echtzeitwarnungen, wenn Unternehmen aus ihrem Portfolio erwähnt werden. So geht’s.
How to set up a proxy server on Windows 10

So richten Sie einen Proxy Server unter Windows 10 ein

Diese Anleitung führt Sie durch die erforderlichen Schritte zur Konfiguration eines Proxy Servers in Windows 10, einschließlich Screenshots sowie wichtiger Tipps zur Auswahl eines Proxys
What is a proxy server & how does it work?

Was ist ein Proxy-Server und wie funktioniert er?

In diesem Leitfaden finden Sie alles, was Sie über Proxy-Server wissen müssen, einschließlich ihrer Funktionsweise, der verschiedenen derzeit verfügbaren Proxy-Typen und eines Vergleichs zwischen Proxy-Servern und VPNs, damit Ihr Unternehmen das richtige Tool für Ihr Unternehmen auswählen kann.