Herunterladen einer Datei in Python

Siddharth Swami 22 Oktober 2021
  1. Verwendung von das Modul requests zum Herunterladen von Dateien in Python
  2. Verwendung des Moduls urllib zum Herunterladen von Dateien in Python
  3. Verwenden Sie das Modul pycurl, um Dateien in Python herunterzuladen
Herunterladen einer Datei in Python

Python wird sehr häufig verwendet, um auf Ressourcen im Internet zuzugreifen. Wir können Anfragen und Verbindungen mit verschiedenen Bibliotheken generieren. Solche Bibliotheken können uns auch beim Herunterladen oder Lesen von HTTP-Dateien aus dem Internet helfen.

In diesem Tutorial werden wir Dateien in Python aus dem Internet herunterladen.

Verwendung von das Modul requests zum Herunterladen von Dateien in Python

Mit dem Modul requests können wir Informationen abrufen und Webseiten aus dem Internet lesen.

Die Methode get() hilft, den Pfad der Datei von der angegebenen URL abzurufen, von der die Datei heruntergeladen werden soll. Die Methode open() erstellt ein Dateiobjekt, in dem wir die Datei speichern möchten, und dann wird die Funktion write() verwendet, um den Inhalt der Datei in den gewünschten Pfad zu schreiben.

Wir verwenden diese Funktionen, um eine Datei herunterzuladen, wie unten gezeigt.

import requests as req

URL = "https://www.facebook.com/favicon.ico"
file = req.get(url, allow_redirects=True)

open("facebook.ico", "wb").write(file.content)

Ausgabe:

1150

Der obige Code lädt eine Logo-Datei von Facebook von seiner URL herunter und speichert sie im Arbeitsverzeichnis. Wir können einen beliebigen Pfad in der Funktion open() angeben, müssen ihn aber im wb-Modus öffnen. Dies zeigt an, dass wir beabsichtigen, eine Datei im Binärmodus zu schreiben.

Das obige Beispiel eignet sich zum Herunterladen kleinerer Dateien, funktioniert jedoch bei großen Dateien nicht effizient. Die Funktion file.content wird verwendet, um den Dateiinhalt als einzelnen String zu erhalten. Da wir im obigen Beispiel eine kleine Datei verwendet haben, funktionierte es einwandfrei.

Wenn wir eine große Datei herunterladen müssen, sollten wir die Funktion file.iter_content() verwenden, in der wir die Chunk-Größe angeben. Es lädt die Daten in Form von Blöcken herunter.

Diese Funktion verwenden wir im folgenden Beispiel.

import requests

URL = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

file = requests.get(URL, stream=True)

with open("Python.pdf", "wb") as pdf:
    for chunk in file.iter_content(chunk_size=1024):

        if chunk:
            pdf.write(chunk)

Verwendung des Moduls urllib zum Herunterladen von Dateien in Python

Wir können auch die Bibliothek urllib in Python zum Herunterladen und Lesen von Dateien aus dem Web verwenden. Dies ist ein URL-Handling-Modul, das verschiedene Funktionen hat, um die gegebene Aufgabe auszuführen.

Auch hier müssen wir die URL der herunterzuladenden Datei angeben. Die Methode urllib.request.urlopen() ermittelt den Pfad der Datei und sendet eine Anfrage an den Server, von dem die Datei heruntergeladen wird.

Um Dateien herunterzuladen, können wir die Funktion urllib.request.urlretrieve() verwenden. Es lädt die Ressource von der angegebenen Adresse herunter und speichert sie im bereitgestellten Verzeichnis.

Wir laden das Icon von Facebook mit dieser Methode im folgenden Beispiel herunter.

import urllib

urllib.request.urlretrieve("https://www.facebook.com/favicon.ico", "fb.ico")

Ausgabe:

('fb.ico', <http.client.HTTPMessage at 0x2d2d317a088>)

Die obige Ausgabe zeigt an, dass die Datei erfolgreich heruntergeladen wurde.

Verwenden Sie das Modul pycurl, um Dateien in Python herunterzuladen

Mit diesem Modul können wir das Dateihandling verwenden, um Dateien aus dem Internet herunterzuladen. Zuerst müssen wir ein Dateiobjekt erstellen, für das wir die erforderliche Datei herunterladen möchten. Dann verwenden wir die Funktion pycurl.Curl(), um ein Objekt zu erstellen und die Curl-Sitzung zu initiieren.

Die Methode setopt() wird verwendet, um den URL-Wert der Datei zu setzen. Als nächstes führt die Funktion perform() den Dateiübertragungsprozess vom Server durch, indem sie den HTTP-Request sendet. Als Nächstes schreiben wir die abgerufenen Daten mithilfe des Dateiobjekts in die Datei. Schließlich schließt die Methode close() die Sitzung, und wir erhalten unsere Datei in das Arbeitsverzeichnis heruntergeladen.

Siehe den Code unten.

import pycurl

file_name = "fb.ico"
file_src = "https://www.facebook.com/favicon.ico"

with open(file_name, "wb") as f:
    cl = pycurl.Curl()
    cl.setopt(cl.URL, file_src)
    cl.setopt(cl.WRITEDATA, f)
    cl.perform()
    cl.close()

Verwandter Artikel - Python HTTP