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 an 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, weit verbreitet. 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:
- Dateien aus dem Internet herunterladen: Mit Wget können Sie Dateien aus dem Internet herunterladen, darunter Webseiten, Bilder und andere Dateitypen.
- Anpassbare Download-Optionen: Mit Wget können Sie verschiedene Optionen festlegen, um Ihre Downloads anzupassen, 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 abgebrochen wurde, was Zeit und Bandbreite spart.
- Rekursives Herunterladen: Mit wget kann eine gesamte Website oder ein Verzeichnis heruntergeladen werden, indem Links rekursiv verfolgt werden.
- Unterstützung für HTTP, HTTPS und FTP: Wget kann verschiedene Arten von Internetprotokollen verarbeiten, darunter HTTP, HTTPS und FTP, was es zu einem vielseitigen Tool für das Herunterladen von verschiedenen Servertypen macht.
- Verfügbar auf den meisten Unix-ähnlichen Systemen: Wget ist auf den meisten Unix-ähnlichen Systemen, einschließlich Linux und macOS, weit verbreitet, was die Verwendung auf einer Vielzahl von Plattformen erleichtert.
Warum wget mit Python verwenden?
Python und wget lassen sich kombinieren, um das Herunterladen von Webseiten und Dateien zu automatisieren, was Zeit und Aufwand spart. Wget kann über Python angepasst werden, und Aufgaben wie Web-Scraping oder das Herunterladen von Dateien lassen sich in bestehende Python-Skripte integrieren.
Es gibt mehrere Gründe, warum man sich für die Verwendung von wget mit Python entscheiden könnte:
- 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 Aufwand sparen, insbesondere wenn Sie eine große Anzahl von Dateien oder Websites herunterladen müssen.
- Anpassung: Mit Wget können Sie verschiedene Optionen festlegen, um Ihre Downloads anzupassen, wie z. B. das Verzeichnis, in dem die Datei gespeichert werden soll, den Dateinamen und ob vorhandene Dateien überschrieben werden sollen. Durch die Verwendung von Wget mit Python können Sie diese Optionen programmgesteuert festlegen und Ihre Downloads an Ihre Bedürfnisse 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 Datei-Download-Aufgaben zu vereinfachen.
- Skalierbarkeit: Python ist eine skalierbare Sprache, die große Datenmengen verarbeiten kann. Durch die Verwendung von wget mit Python können Sie Ihre Web-Scraping- oder Datei-Download-Aufgaben skalieren, um größere Datensätze zu verarbeiten.
Erste Schritte
Nachdem wir nun die einzelnen und kombinierten Vorteile von Python und wget besprochen haben, kommen wir zum Teil des Programmierens.
Installation von wget
Stellen Sie sicher, dass wget auf Ihrem Computer installiert ist. Wenn Sie Linux als Betriebssystem verwenden, ist es bereits installiert.
- Wenn Sie Windows-Nutzer sind, können Sie die Binärdatei von dieser Seite herunterladen. Stellen Sie sicher, dass Sie den Pfad zur Binärdatei zur Umgebungsvariable PATH hinzufügen. Eine weitere Option ist die Verwendung von WSL (Windows Subsystem for Linux). Lesen Sie hier mehr darüber.
- Wenn Sie Mac-Nutzer sind, installieren Sie wget mit brew
Vergessen Sie nicht, die umfangreiche Dokumentation zu wget hier zu lesen.
Python installieren
Laden Sie die neueste Version von Python von der offiziellen Website herunter und befolgen Sie die Installationsanweisungen für Ihre Plattform. Nach der Installation können Sie die Version mit diesem Befehl überprüfen:
python3 --versionSystembefehle in Python ausführen
Das `subprocess`-Modul in Python ermöglicht es Ihnen, Systembefehle auszuführen und deren Ausgabe zu erfassen. Es ist eine leistungsstarke und flexible Möglichkeit, aus Ihren Python-Skripten heraus mit dem Betriebssystem zu interagieren.
Um das `subprocess`-Modul zu verwenden, müssen Sie es zunächst in Ihr Python-Skript importieren. Anschließend können Sie die Funktion `subprocess.run()` verwenden, um einen Systembefehl auszuführen und dessen 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()`, um den Befehl `ls` auszuführen, 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
NoneHerunterladen mit wget
Eine Datei herunterladen
Beginnen wir mit dem Herunterladen des WebScrapingAPI-Logos. Ersetzen Sie die Argumentliste durch `wget` und die Logo-URL. Der Befehl sieht dann wie folgt aus:
result = subprocess.run(['wget', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Das Skript gibt die folgende Ausgabe zurück:
--2023-01-06 19:06:32-- https://www.webscrapingapi.com/images/logo/logo-white.svg
Resolving www.webscrapingapi.com (www.webscrapingapi.com)... 76.76.21.61, 76.76.21.98
Connecting to www.webscrapingapi.com (www.webscrapingapi.com)|76.76.21.61|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5391 (5.3K) [image/svg+xml]
Saving to: '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' saved [5391/5391]
None
Aus der Ausgabe können wir ersehen, wie `wget` den Domainnamen auflöst, eine Verbindung zur Domain herstellt, den Antwortcode `200 OK` erhält, die Dateilänge (5,3 kB) ermittelt und die Datei lokal unter dem Namen `logo-white.svg` speichert.
Sie können im Projektordner nach der Datei `logo-white.svg` suchen.
In ein Verzeichnis herunterladen
Sie können die Datei mithilfe des `-P`-Flags in ein benutzerdefiniertes Verzeichnis herunterladen. Aktualisieren wir das Skript und führen es aus, um die Ergebnisse zu sehen:
result = subprocess.run(['wget', '-P', 'images', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])
Die Ausgabe ist fast identisch, mit dem einzigen Unterschied, dass die Datei im Verzeichnis `./images/` gespeichert wird.
Festlegen des Dateinamens für die heruntergeladene Datei
Mit dem Flag `-O` können Sie einen neuen Namen für die heruntergeladene Datei festlegen. Probieren wir es aus:
result = 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
Mit dem Flag `-N` kannst du die Remote-Datei nur dann herunterladen, wenn die Version neuer ist als die lokale Datei. Der Befehl sieht dann so aus:
result = subprocess.run(['wget', '-N', 'https://www.webscrapingapi.com/images/logo/logo-white.svg'])Unterbrochene Downloads fortsetzen
Wenn ein Download unterbrochen wird, kann `wget` ihn an der Stelle fortsetzen, an der er abgebrochen wurde, was Zeit und Bandbreite spart. Dazu müssen Sie das Flag `-c` verwenden, das `wget` anweist, einen unterbrochenen Download fortzusetzen.
Der Befehl sieht dann wie folgt aus:
result = 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 request sent, awaiting response... 416 Requested Range Not Satisfiable
The file is already fully retrieved; nothing to do.Rekursiver Download
Mit `wget` kann eine gesamte Website oder ein Verzeichnis heruntergeladen 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 verfolgen, und das Flag `-l` gibt die maximale Tiefe der Rekursion an.
result = subprocess.run(['wget', '-r', '-l', '2', 'https://www.webscrapingapi.com'])
Dieser Befehl lädt die Website unter „https://www.webscrapingapi.com“ herunter und folgt den Links zu anderen Seiten derselben Website bis zu einer maximalen Tiefe von 2.
Wann ist wget nicht die richtige Lösung?
Es gibt mehrere Situationen, in denen es sinnvoller sein könnte, 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` verfügt nicht über diese Fähigkeit.
- 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 vereinfacht. wget ist nicht für das Parsen und Extrahieren von Daten aus Webseiten ausgelegt.
- 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 Klicken auf Schaltflächen und zur Ausführung anderer Aktionen verwendet werden, die mit wget nicht möglich sind.
Fazit
Python und wget sind leistungsstarke Werkzeuge zur Automatisierung des Herunterladens von Dateien und Webseiten. Durch die Verwendung von wget mit Python können Sie Ihre Downloads anpassen, Web-Scraping- oder Datei-Download-Aufgaben in Ihre bestehenden Python-Skripte integrieren und Zeit und Aufwand sparen.
Es ist jedoch wichtig, die Nutzungsbedingungen der Websites, von denen Sie herunterladen, zu beachten und eine Überlastung der Server zu vermeiden.
Wenn Sie nach einer Alternative zu wget für das Web-Scraping suchen, sollten Sie die Verwendung von WebScrapingAPI in Betracht ziehen. WebScrapingAPI ist ein professioneller Web-Scraping-Dienst, mit dem Sie ganz einfach Daten von Websites extrahieren können, ohne einen eigenen Web-Scraper erstellen und warten zu müssen.
Es ist eine schnelle, zuverlässige und kostengünstige Lösung, die für Unternehmen jeder Größe geeignet ist.




