Mühelose Downloads von Webseiten und Dateien mit Python und wget

Suciu Dan am 21. April 2023

blog-image

Sind Sie es leid, Webseiten und Dateien manuell herunterzuladen? Wünschten Sie sich, es gäbe einen einfacheren Weg, um an die benötigten Daten zu gelangen? Suchen Sie nicht weiter! In diesem Artikel zeige ich Ihnen, wie Sie Python und das Kommandozeilen-Tool wget verwenden können, um den Prozess zu automatisieren.

In diesem Artikel erfahren Sie, wie Sie Python und wget verwenden können, um den Prozess des Herunterladens aus dem Internet zu automatisieren. Gleichzeitig lernen Sie etwas über die Möglichkeiten und Grenzen von wget sowie über alternative Tools für Web Scraping.

Warum Python?

Python ist eine leistungsstarke und beliebte Programmiersprache, die in verschiedenen Bereichen wie Automatisierung, Data Science und Anwendungsentwicklung eingesetzt wird. Sie ist leicht zu erlernen und verfügt über eine große Bibliothek von Modulen und Frameworks, die ihre Fähigkeiten erweitern.

Warum wget?

Wget ist ein Befehlszeilentool, mit dem Sie Dateien aus dem Internet herunterladen können. Es ist auf den meisten Unix-ähnlichen Systemen, einschließlich Linux und macOS, verfügbar. Wget ist ein vielseitiges Tool, das zum Herunterladen einzelner Dateien, mehrerer Dateien und sogar ganzer Verzeichnisse verwendet werden kann.

Hier sind einige der wichtigsten Funktionen von wget:

  • Herunterladen von Dateien aus dem Internet: Wget kann verwendet werden, um Dateien aus dem Internet herunterzuladen, einschließlich Webseiten, Bilder und andere Dateitypen.
  • Anpassbare Download-Optionen: Mit Wget können Sie verschiedene Optionen zum Anpassen Ihrer Downloads angeben, z. B. das Verzeichnis, in dem die Datei gespeichert werden soll, den Dateinamen und ob vorhandene Dateien überschrieben werden sollen.
  • Unterbrochene Downloads fortsetzen: Wenn ein Download unterbrochen wird, kann wget ihn an der Stelle fortsetzen, an der er unterbrochen wurde, und so Zeit und Bandbreite sparen.
  • Rekursiver Download: wget kann verwendet werden, um eine ganze Website oder ein Verzeichnis herunterzuladen, indem man Links rekursiv folgt.
  • Unterstützung für HTTP, HTTPS und FTP: Wget kann mit verschiedenen Arten von Internetprotokollen umgehen, darunter HTTP, HTTPS und FTP, was es zu einem vielseitigen Tool für das Herunterladen von verschiedenen Servern macht.
  • Auf den meisten Unix-ähnlichen Systemen verfügbar: Wget ist auf den meisten Unix-ähnlichen Systemen, einschließlich Linux und macOS, verfügbar und kann somit auf einer Vielzahl von Plattformen verwendet werden.

Warum wget mit Python verwenden?

Python und wget können kombiniert werden, um den Prozess des Herunterladens von Webseiten und Dateien zu automatisieren und so Zeit und Mühe zu sparen. Wget kann über Python angepasst werden, und Aufgaben zum Web-Scraping oder Herunterladen von Dateien können in bestehende Python-Skripte integriert werden.

Es gibt mehrere Gründe, warum man wget mit Python verwenden möchte:

  • Automatisierung: Durch die Verwendung von wget mit Python können Sie den Prozess des Herunterladens von Dateien aus dem Internet automatisieren. Dies kann Zeit und Mühe sparen, insbesondere wenn Sie eine große Anzahl von Dateien oder Websites herunterladen müssen.
  • Anpassungen: Mit wget können Sie verschiedene Optionen zur Anpassung Ihrer Downloads angeben, z. B. das Verzeichnis, in dem die Datei gespeichert werden soll, den Dateinamen und ob vorhandene Dateien überschrieben werden sollen. Wenn Sie wget mit Python verwenden, können Sie diese Optionen programmgesteuert festlegen und Ihre Downloads nach Ihren Bedürfnissen anpassen.
  • Benutzerfreundlichkeit: Python ist bekannt für seine Einfachheit und Lesbarkeit, was es zu einer leicht zu erlernenden und zu verwendenden Sprache macht. Durch die Verwendung von wget mit Python können Sie die Leistungsfähigkeit von Python nutzen, um Web-Scraping und Dateidownloads zu vereinfachen.
  • Skalierbarkeit: Python ist eine skalierbare Sprache, die in der Lage ist, große Datenmengen zu verarbeiten. Durch die Verwendung von wget mit Python können Sie Ihre Web-Scraping- oder Dateidownload-Aufgaben skalieren, um größere Datenmengen zu verarbeiten.

Erste Schritte

Nachdem wir nun die einzelnen und kombinierten Vorteile von Python und wget erörtert haben, kommen wir nun zum Schreiben des Codes.

Installation von wget

Stellen Sie sicher, dass wget auf Ihrem Computer installiert ist. Wenn Ihr bevorzugtes Betriebssystem Linux ist, haben Sie es bereits installiert.

  • Wenn Sie ein Windows-Benutzer sind, können Sie die Binärdatei von dieser Seite herunterladen. Stellen Sie sicher, dass Sie den Binärpfad in die Umgebungsvariable PATH aufnehmen. Eine andere Möglichkeit ist die Verwendung von WSL (Windows Subsystem for Linux). Lesen Sie mehr darüber hier.
  • Wenn Sie ein Mac-Benutzer sind, installieren Sie wget mit brew

Vergessen Sie nicht, die ausführliche Dokumentation von wget hier zu lesen.

Installation von Python

Holen Sie sich die neueste Version von Python von der offiziellen Website und folgen Sie den Installationsanweisungen für Ihre Plattform. Nach der Installation können Sie die Version mit diesem Befehl überprüfen:

python3 --version

Ausführen von Systembefehlen in Python

Mit dem Modul `subprocess` in Python können Sie Systembefehle ausführen und deren Ausgabe aufzeichnen. Es ist ein leistungsfähiger und flexibler Weg, um aus Ihren Python-Skripten heraus mit dem Betriebssystem zu interagieren.

Um das Modul "subprocess" zu verwenden, müssen Sie es zunächst in Ihr Python-Skript importieren. Dann können Sie die Funktion "subprocess.run()" verwenden, um einen Systembefehl auszuführen und seine Ausgabe zu erfassen.

Die Funktion `run()` nimmt den auszuführenden Befehl als Zeichenkette entgegen und gibt ein `CompletedProcess`-Objekt zurück, das den Exit-Code, stdout und stderr des Befehls enthält.

Hier ist ein Beispiel für die Verwendung der Funktion `subprocess.run()` zur Ausführung des Befehls ls, der die Dateien in einem Verzeichnis auflistet:

import subprocess

result = subprocess.run(['ls', '-l'])

print(result.stdout)

Führen Sie diesen Code mit dem Befehl python3 main.py aus. Das Ergebnis sollte wie folgt aussehen.

total 4

-rw-r--r-- 1 dan dan 80 Jan 6 18:58 main.py

Keine

Herunterladen mit wget

Eine Datei herunterladen

Beginnen wir mit dem Herunterladen des WebScrapingAPI-Logos. Ersetzen Sie die Liste der Argumente durch `wget` und die URL des Logos. Der Befehl sieht dann wie folgt aus:

Ergebnis = subprocess.run(['wget', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])

Das Skript liefert die folgende Ausgabe:

--2023-01-06 19:06:32-- https://www.webscrapingapi.com/images/logo/logo-white.svg

Auflösen von www.webscrapingapi.com (www.webscrapingapi.com)... 76.76.21.61, 76.76.21.98

Verbindung zu www.webscrapingapi.com (www.webscrapingapi.com)|76.76.21.61|:443... verbunden.

HTTP-Anfrage gesendet, erwarte Antwort... 200 OK

Länge: 5391 (5.3K) [image/svg+xml]

Speichern in: 'logo-white.svg'

logo-white.svg 100%[====================================================================================================================================================================>] 5.26K --.-KB/s in 0.06s

2023-01-06 19:06:33 (91.6 KB/s) - 'logo-white.svg' gespeichert [5391/5391]

Keine

Anhand der Ausgabe können wir sehen, wie `wget` den Domänennamen auflöst, eine Verbindung zur Domäne herstellt, einen "200 OK"-Antwortcode empfängt, die Dateilänge (5,3k) feststellt und beginnt, die Datei lokal unter dem Namen "logo-white.svg" zu speichern.

Sie können im Projektordner nach der Datei `logo-white.svg` suchen.

Herunterladen in ein Verzeichnis

Sie können die Datei in ein benutzerdefiniertes Verzeichnis herunterladen, indem Sie das Flag "P" verwenden. Aktualisieren wir das Skript und führen wir es aus, um die Ergebnisse zu sehen:

Ergebnis = subprocess.run(['wget', '-P', 'images', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])

Die Ausgabe ist fast die gleiche, mit dem einzigen Unterschied, dass die Datei im Verzeichnis `./images/` gespeichert ist.

Einstellung des Namens der heruntergeladenen Datei

Mit dem Flag `-O` können Sie einen neuen Namen für die heruntergeladene Datei angeben. Versuchen wir es mal:

Ergebnis = subprocess.run(['wget', '-O', 'named-logo.svg', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])

Suchen Sie im Projektordner nach der Datei `named-logo.svg`.

Datei herunterladen, wenn die Remote-Version neuer ist

Sie können das Flag `-N` verwenden, um die entfernte Datei nur dann herunterzuladen, wenn die Version neuer ist als die der lokalen Datei. Der Befehl sieht dann wie folgt aus:

Ergebnis = subprocess.run(['wget', '-N', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])

Lebenslauf unterbrochene Downloads

Wenn ein Download unterbrochen wird, kann `wget` ihn an der Stelle fortsetzen, an der er unterbrochen wurde, um Zeit und Bandbreite zu sparen. Um dies zu tun, müssen Sie das Flag `-c` verwenden, das `wget` anweist, einen unterbrochenen Download fortzusetzen.

Der Befehl sieht dann wie folgt aus:

Ergebnis = subprocess.run(['wget', '-c', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])

Wenn der Dateidownload abgeschlossen wurde, sehen Sie in der Ausgabe die folgende Meldung:

HTTP-Anfrage gesendet, erwarte Antwort... 416 Requested Range Not Satisfiable

Die Datei ist bereits vollständig abgerufen; nichts zu tun.

Rekursiver Download

Wget kann zum Herunterladen einer ganzen Website oder eines Verzeichnisses verwendet werden, indem Links rekursiv verfolgt werden. Dazu müssen Sie die Flags `-r` und `-l` verwenden: Das Flag `-r` weist das Tool an, Links rekursiv zu folgen, und das Flag `-l` gibt die maximale Tiefe der Rekursion an.

Ergebnis = subprocess.run(['wget', '-r', '-l', '2', 'https://www.webscrapingapi.com'])

Dieser Befehl lädt die Website"https://www.webscrapingapi.com" herunter und verfolgt Links zu anderen Seiten derselben Website bis zu einer maximalen Tiefe von 2.

Wann ist wget nicht die Lösung?

Es gibt mehrere Situationen, in denen es sinnvoller ist, curl, Beautiful Soup oder Selenium anstelle von wget zu verwenden:

  • Wenn Sie HTTP-Header oder Cookies setzen müssen: Mit Curl können Sie HTTP-Header und Cookies setzen, was bei der Interaktion mit APIs oder beim Zugriff auf geschützte Websites nützlich sein kann. `wget` hat diese Fähigkeit nicht.
  • Wenn Sie Daten aus HTML parsen und extrahieren müssen: Beautiful Soup ist eine Python-Bibliothek, die das Parsen und Extrahieren von Daten aus HTML-Dokumenten erleichtert. wget ist nicht für das Parsen und Extrahieren von Daten aus Webseiten konzipiert.
  • Wenn Sie als Benutzer mit einer Website interagieren müssen: Selenium ist ein Tool, mit dem Sie den Prozess der Interaktion mit einer Website als Benutzer automatisieren können. Es kann zum Ausfüllen von Formularen, zum Anklicken von Schaltflächen und für andere Aktionen verwendet werden, die mit wget nicht möglich sind.

Schlussfolgerungen

Python und wget sind leistungsstarke Werkzeuge für die Automatisierung des Herunterladens von Dateien und Webseiten. Durch die Verwendung von wget mit Python können Sie Ihre Downloads anpassen, Web-Scraping oder Dateidownload-Aufgaben in Ihre bestehenden Python-Skripte integrieren und Zeit und Mühe sparen.

Es ist jedoch wichtig, dass Sie die Nutzungsbedingungen der Websites, von denen Sie herunterladen, respektieren und eine Überlastung der Server vermeiden.

Wenn Sie auf der Suche nach einer Alternative zu wget für Web Scraping sind, sollten Sie WebScrapingAPI verwenden. WebScrapingAPI ist ein professioneller Web-Scraping-Dienst, mit dem Sie ganz einfach Daten aus Websites extrahieren können, ohne einen eigenen Web-Scraper erstellen und pflegen zu müssen.

Es ist eine schnelle, zuverlässige und kostengünstige Lösung, die für Unternehmen jeder Größe geeignet ist.

Probieren Sie es noch heute aus!

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
LeitfädenScrapy Splash Tutorial: Die Kunst des Scrapings von JavaScript-gerenderten Websites mit Scrapy und Splash beherrschen

Lernen Sie, wie Sie mit Scrapy und Splash dynamische JavaScript-gerenderte Websites scrapen können. Von der Installation über das Schreiben eines Spiders bis hin zum Umgang mit Seitenumbrüchen und der Verwaltung von Splash-Antworten bietet dieser umfassende Leitfaden Schritt-für-Schritt-Anleitungen für Anfänger und Experten gleichermaßen.

Ștefan Răcila
Autorenavatar
Ștefan Răcila
6 Minuten lesen
Vorschaubild
LeitfädenWeb Scraping API Schnellstartanleitung

Starten Sie mit WebScrapingAPI, der ultimativen Web-Scraping-Lösung! Sammeln Sie Echtzeitdaten, umgehen Sie Anti-Bot-Systeme und genießen Sie professionellen Support.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
9 Minuten lesen
Vorschaubild
Wissenschaft des Web ScrapingWeb Scraping leicht gemacht: Die Bedeutung von Data Parsing

Erfahren Sie, wie Sie mit Hilfe von Datenparsing, HTML-Parsing-Bibliotheken und schema.org-Metadaten effizient Daten für Web-Scraping und Datenanalysen extrahieren und organisieren können.

Suciu Dan
Autorenavatar
Suciu Dan
12 Minuten lesen