Heim > Backend-Entwicklung > Python-Tutorial > Wie lade ich Bilder mit dem „Requests'-Modul von Python ordnungsgemäß herunter?

Wie lade ich Bilder mit dem „Requests'-Modul von Python ordnungsgemäß herunter?

Susan Sarandon
Freigeben: 2024-12-11 18:06:17
Original
739 Leute haben es durchsucht

How to Properly Download Images Using Python's `requests` Module?

Bilder mit dem Anforderungsmodul von Python herunterladen

Beim Versuch, ein Bild aus dem Internet mit dem Anforderungsmodul von Python herunterzuladen, können im Vergleich zur Verwendung von urlopen von urllib2 Probleme mit dem Code auftreten Verfahren. Dieser Artikel befasst sich mit diesen Herausforderungen und bietet Lösungen.

Originalcode als Referenz

img = urllib2.urlopen(settings.STATICMAP_URL.format(**data))
with open(path, 'w') as f:
    f.write(img.read())
Nach dem Login kopieren

Neuer Code als Referenz

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)
Nach dem Login kopieren

Problem

Das Problem entsteht bei der Verwendung von Anfragen, da sich das Attribut aus der Antwort, das die Bilddaten enthält, von dem von urlopen in unterscheidet urllib2.

Lösung

Um die Bilddaten aus der Anfrageantwort abzurufen, gibt es zwei Möglichkeiten:

  1. Verwenden des Dateiobjekts „response.raw“: Diese Methode erfordert das Setzen von decode_content auf True und das anschließende Streamen der Daten in eine Datei Objekt:
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
  1. Iterieren über die Antwort: Diese Methode stellt sicher, dass Anfragen die Daten während der Iteration dekodieren:
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

Durch die Einstellung „stream=True“ im Anforderungsaufruf wird verhindert, dass das gesamte Bild auf einmal in den Speicher heruntergeladen wird. Um Fehler zu vermeiden, sollte die Datei im Binärmodus geöffnet werden.

Das obige ist der detaillierte Inhalt vonWie lade ich Bilder mit dem „Requests'-Modul von Python ordnungsgemäß 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage