Heim > Backend-Entwicklung > Python-Tutorial > Wie lade ich Bilder mit dem Anforderungsmodul von Python effizient herunter?

Wie lade ich Bilder mit dem Anforderungsmodul von Python effizient herunter?

DDD
Freigeben: 2024-12-18 10:19:13
Original
267 Leute haben es durchsucht

How to Efficiently Download Images with Python's Requests Module?

Herunterladen von Bildern mit dem Anforderungsmodul in Python

In dem Bemühen, ein Bild aus dem Web mithilfe des Anforderungsmoduls herunterzuladen und zu speichern, hat ein Entwickler stößt auf Schwierigkeiten. Der bereitgestellte Code funktioniert zunächst, aber der geänderte Code mithilfe von Anfragen führt zu einem Fehler.

Der Fehler entsteht durch die Verwendung eines falschen Attributs aus der Anfrageantwort. Um das Bild mithilfe von Anfragen erfolgreich abzurufen, gibt es zwei Optionen:

Verwendung des Dateiobjekts „response.raw“

Die Nutzung des Attributs „response.raw“ gibt die Rohdaten des zurück Antwort. Die Dekodierung komprimierter Antworten (z. B. mit GZIP oder Deflate) erfolgt nicht automatisch. Um die Dekomprimierung zu erzwingen, setzen Sie das Attribut decode_content auf True. Anschließend verwenden Sie Shutil.copyfileobj(), um die Daten in ein Dateiobjekt zu streamen.

import requests
import shutil

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)
Nach dem Login kopieren

Iterieren über die Antwort

Ein alternativer Ansatz besteht darin, über die Antwort zu iterieren , was die Datendekomprimierung gewährleistet.

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r:
            f.write(chunk)
Nach dem Login kopieren

Das Anpassen der Blockgröße ist mit Response.iter_content() möglich. Methode.

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r.iter_content(1024):
            f.write(chunk)
Nach dem Login kopieren

Denken Sie daran, die Zieldatei im Binärmodus zu öffnen, um die Übersetzung von Zeilenumbrüchen zu verhindern, und setzen Sie stream=True, um speicherintensive vollständige Downloads zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie lade ich Bilder mit dem Anforderungsmodul von Python effizient herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage