cURL: Was es ist und wie Sie es für Web-Scraping nutzen können

cURL ist ein vielseitiger Befehl, der von Programmierern für die Datenerfassung und -übertragung verwendet wird. Doch wie können Sie cURL für das Web-Scraping nutzen? Dieser Artikel wird Ihnen den Einstieg erleichtern.
7 min read

In diesem Blogbeitrag erfahren Sie Folgendes:

Was ist cURL?

cURL ist ein Befehlszeilentool, mit dem sich Daten über Netzwerkprotokolle übertragen lassen. Die Bezeichnung cURL steht für „Client URL“ bzw. wird auch als „curl“ geschrieben. Dieser beliebte Befehl nutzt die URL-Syntax für die Übertragung von Daten zu und von Servern. Curl basiert auf „libcurl“, einer kostenlosen und benutzerfreundlichen clientseitigen URL-Übertragungsbibliothek.

Weshalb ist die Verwendung von curl sinnvoll?

Die Vielseitigkeit dieses Befehls ermöglicht den Einsatz von curl für eine Vielzahl von Anwendungsfällen, wie etwa:

  • Benutzerauthentifizierung
  • HTTP-Beiträge
  • SSL-Verbindungen
  • Proxy-Unterstützung
  • FTP-Uploads

Der wohl einfachste „Anwendungsfall“ für curl wäre das Hoch- und Herunterladen ganzer Websites über eines der unterstützten Protokolle.

Curl-Protokolle

Obwohl curl eine lange Liste von unterstützten Protokollen aufweist, wird bei fehlenden Angaben zu einem bestimmten Protokoll standardmäßig HTTP verwendet. Im Folgenden finden Sie die Liste der unterstützten Protokolle:

DICTDATEIFTP
FTPSGOPHERHTTP
HTTPSIMAPIMAPS
LDAPPOP3RTMP
RTSPSCPSFTP
SMBSMBSTELNET
TFTP

Installation von curl

Der Befehl curl wird in Linux-Distributionen bereits standardmäßig installiert.

Wie stellen Sie fest, ob Sie curl bereits installiert haben?

1. Öffnen Sie Ihre Linux-Konsole

2. Geben Sie „curl“ ein und klicken Sie auf „Enter“.

3. Wenn curl bereits installiert ist, wird die folgende Meldung angezeigt:

curl: try 'curl --help' for more information

4. Ist curl noch nicht installiert, erhalten Sie folgende Meldung: „Befehl nicht gefunden“. In diesem Fall können Sie zu Ihrem Distributionspaket übergehen und es installieren (weitere Einzelheiten hierzu weiter unten).

Verwendung von cURL

Die Syntax von curl ist ziemlich einfach:

curl [options] [url]

Möchten Sie zum Beispiel eine Webseite herunterladen: webpage.com führen Sie einfach den folgenden Befehl aus:

curl www.webpage.com

Dieser Befehl liefert Ihnen anschließend den Quellcode der Seite in Ihrem Terminalfenster. Beachten Sie jedoch, dass, sofern Sie kein Protokoll angeben, curl standardmäßig auf HTTP zurückgreift. Nachfolgend finden Sie ein Beispiel zur Definition von spezifischen Protokollen:

curl ftp://webpage.com

Wenn Sie vergessen, das „//“ hinzuzufügen, wird curl das von Ihnen gewünschte Protokoll ermitteln.

Nachdem wir kurz über die grundlegende Verwendung des Befehls gesprochen haben, steht Ihnen auf der Dokumentationsseite von curl eine Auflistung verschiedener Optionen zur Verfügung. Bei den Optionen handelt es sich um mögliche Aktionen, die Sie mit der URL ausführen können. Sobald eine Option ausgewählt ist, wird cURL angewiesen, welche Aktion mit der von Ihnen angegebenen URL durchgeführt werden soll. Die angegebene URL teilt cURL mit, wo diese Aktion ausgeführt werden soll. Anschließend können Sie mit cURL eine oder mehrere URLs auflisten.

Falls Sie mehrere URLs herunterladen möchten, stellen Sie jeder URL ein -0 gefolgt von einem Leerzeichen voran. Dies können Sie in einer einzelnen Zeile tun oder für jede URL eine gesonderte Zeile schreiben. Durch Auflisten der Seiten können Sie auch einen Teil einer URL herunterladen. Als Beispiel:

 curl.exe -O http://example.com/page{1,4,6}.html

Speichern des heruntergeladenen Materials

Mit curl können Sie den Inhalt der URL in einer Datei speichern, wobei zwei verschiedene Methoden zur Anwendung kommen:

1. Methode -o: Gestattet das Hinzufügen eines Dateinamens, unter dem die URL gespeichert werden soll. Diese Option hat folgende Struktur:

curl -0 filename.html http://example.com/file.html

2. Methode -O: Hierbei sind keine Angaben zum Dateinamen erforderlich, da diese Option das Speichern der Datei unter dem URL-Namen ermöglicht. Um diese Option zu verwenden, muss der URL lediglich ein -O vorangestellt werden.

Fortsetzen des Ladevorgangs

Eventuell bricht der Ladevorgang mittendrin ab. Schreiben Sie in solchen Fällen den Befehl neu und ergänzen Sie ihn um die Option -C am Anfang:

curl -C - -O http://website.com/file.html

Was macht curl so beliebt?

Curl ist wirklich das „Schweizer Messer“ unter den Befehlen, das für komplexe Operationen entwickelt wurde. Es gibt allerdings auch Alternativen, zum Beispiel „wget“ oder „Kurly“, die sich für einfachere Aufgaben eignen.

Curl ist bei Entwicklern sehr beliebt, da das Programm für nahezu jede Plattform verfügbar ist. Manchmal ist es sogar standardmäßig installiert. Das bedeutet, unabhängig von den von Ihnen ausgeführten Programmen/Aufgaben, sollten die Curl-Befehle einwandfrei funktionieren.

Zudem besteht die Wahrscheinlichkeit, dass Sie Curl installiert haben, wenn Ihr Betriebssystem weniger als zehn Jahre alt ist. Sie können die Dokumentation auch in einem Browser lesen und in der curl-Dokumentation einsehen. Falls Sie mit einer neueren Version von Windows arbeiten, haben Sie curl vermutlich bereits installiert. Andernfalls lesen Sie sich diesen Beitrag auf Stack Overflow durch, um mehr über den Vorgang zu erfahren.

Verwendung von cURL mit Proxys

Einige Anwender bevorzugen die Nutzung von cURL mit einem Proxy. Dies bietet unter anderem folgende Vorteile:

  1. Verbesserte Verwaltbarkeit von Datenanfragen verschiedener geografischer Standorte.
  2. Exponentielle Steigerung der Anzahl gleichzeitiger Datenaufträge, die man simultan ausführen kann. 

Zu diesem Zweck können Sie die bereits in cURL integrierten Funktionen „-x“ und „(- – Proxy)“ nutzen. Nachfolgend finden Sie ein Beispiel für die Befehlszeile, die Sie zur Integration des von Ihnen verwendeten Proxys in cURL einsetzen können:

$ curl -x 026.930.77.2:6666 http://linux.com/

Im obigen Codeausschnitt steht „6666“ als Platzhalter für die Portnummer, während „026.930.77.2“ die IP-Adresse angibt. 


Wissenswert: cURL ist mit den meisten derzeit gängigen Proxy-Varianten kompatibel, darunter HTTP, HTTPS und SOCKS.

Ändern des User-Agents

User-Agents sind Kenndaten, anhand derer Zielseiten das anfragende Gerät identifizieren können. Eine Zielseite kann von den Anfragenden die Erfüllung bestimmter Kriterien fordern, bevor sie die gewünschten Zieldaten zurücksendet. Dies könnte sich auf einen Gerätetyp, ein Betriebssystem oder den verwendeten Browser beziehen. In solchen Situationen möchten die Einrichtungen, die Daten sammeln, den idealen „Kandidaten“ ihrer Zielseite nachahmen. 

Angenommen, die Website, auf die Sie abzielen, „bevorzugt“ die Verwendung von Chrome als Browser. Um den gewünschten Datensatz mit cURL zu erhalten, müssen Sie diese „Browser-Eigenschaft“ wie folgt emulieren: 

curl -A "Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71" https://getfedora.org/

Web-Scraping mit cURL

Profi-Tipp: Befolgen Sie unbedingt die Regeln einer Website und versuchen Sie im Allgemeinen nicht, auf passwortgeschützte Inhalte zuzugreifen, denn das ist meist rechtswidrig oder zumindest missbilligt.

Mithilfe von curl können Sie den sich wiederholenden Prozess beim Web-Scraping automatisieren und sich somit lästige Aufgaben ersparen. Voraussetzung dafür ist, dass Sie PHP verwenden. Hier ein Beispiel, welches wir auf GitHub gefunden haben:


<?php

/**
 * @param string $url - the URL you wish to fetch.
 * @return string - the raw HTML response.
 */
function web_scrape($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

/**
 * @param string $url - the URL you wish to fetch.
 * @return array - the HTTP headers returned.
 */
function fetch_headers($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

// Example usage:
// var_dump(get_headers("https://www.example.com"));
// echo web_scrape('https://www.example.com/');

?>

Beim Scrapen einer Webseite mittels curl stehen die folgenden drei Optionen zur Auswahl:

  • Initialisierung der Sitzung
curl_init($url)
  • Ausführen der Sitzung
curl_exec()
  • Beenden der Sitzung
curl_close()

Weitere Optionen, die sich anbieten, sind:

  • Festlegen der URL, die ausgelesen werden soll
CURLOPT_URL
  • Weist curl an, die abgerufenen Seiten als Variable zu speichern. (So erhalten Sie genau das, was Sie aus der Seite extrahieren wollten).
CURLOPT_RETURNTRANSFER

Fazit

cURL ist zwar ein leistungsfähiges Web-Scraping-Tool, erfordert jedoch, dass Unternehmen wertvolle Entwicklungszeit sowohl für die Datenerfassung als auch für die Datenbereinigung aufwenden. Genau an dieser Stelle kommt Bright Data ins Spiel. Die marktführende Webdaten-Plattform Bright Data verfügt über ein umfangreiches Produktspektrum zur Unterstützung von Web-Scraping-Anforderungen. Zu Bright Datas Produkten zählen u. a. die speziell für Entwickler konzipierte Web Scraper IDE, ein automatisierter Browser mit integrierter Funktion zur Freigabe von Websites. Darüber hinaus bietet Bright Data einen Marktplatz für Datensätze für diejenigen, die lieber präzise Daten erhalten möchten als zu scrapen, sowie über 72 Millionen zuverlässige Proxys.