So laden Sie eine Datei aus dem Web in Python 3 mit einer in einem String gespeicherten URL herunter
Beim Versuch, eine Datei von einem herunterzuladen Auf einem Webserver in Python 3 kann die Übergabe einer Zeichenfolge als URL zu einem Fehler führen, der die Eingabe von Bytes erfordert. In diesem Artikel werden mehrere Methoden vorgestellt, um dieses Problem zu umgehen und die Datei erfolgreich abzurufen.
Verwenden von urllib.request.urlopen
Um den Inhalt einer Webseite abzurufen, verwenden Sie urllib .request.urlopen(). Diese Funktion gibt ein Antwortobjekt zurück, das dann in eine Variable eingelesen werden kann:
import urllib.request
url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read() # a `bytes` object
Verwenden von urlib.request.urlretrieve
Der einfachste Weg, eine Datei herunterzuladen und zu speichern, ist die Verwendung von die Funktion urllib.request.urlretrieve:
import urllib.request
url = 'http://example.com/file.txt'
urllib.request.urlretrieve(url, 'file.txt')
Diese Methode lädt die Datei von der angegebenen URL herunter und speichert sie lokal als 'file.txt'.
Verwendet urlib.request.urlopen mit Shutil.copyfileobj
Für eine bessere Kontrolle über den Download Verwenden Sie im Prozess urllib.request.urlopen(), um ein dateiähnliches Objekt zurückzugeben. Dieses Objekt kann dann mit „shutil.copyfileobj():
import urllib.request
import shutil
url = 'http://example.com/file.zip'
with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file:
shutil.copyfileobj(response, out_file)
Speichern des Downloads als Bytes
Wenn Geschwindigkeit Priorität hat, können die heruntergeladenen Daten direkt in einem Bytes-Objekt und anschließend gespeichert werden in eine Datei geschrieben, obwohl dies nur für kleine Dateien geeignet ist:
import urllib.request
url = 'http://example.com/icon.png'
with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file:
data = response.read() # a `bytes` object
out_file.write(data)
Verarbeitung komprimierter Dateien
urllib.request.urlopen() kann auch zur Verarbeitung komprimierter Dateien verwendet werden, sofern der Server Direktzugriff unterstützt:
import urllib.request
import gzip
url = 'http://example.com/archive.gz'
with urllib.request.urlopen(url) as response:
with gzip.GzipFile(fileobj=response) as uncompressed:
file_header = uncompressed.read(64) # a `bytes` object
Durch die Implementierung einer dieser Methoden können Entwickler in Python 3 erfolgreich Dateien aus dem Web herunterladen, selbst wenn die URL als String gespeichert ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3