Mühelose Downloads von Webseiten und Dateien mit Python und wget
Suciu Dan am 21. April 2023

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

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.


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


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.
