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.
img = urllib2.urlopen(settings.STATICMAP_URL.format(**data)) with open(path, 'w') as f: f.write(img.read())
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)
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.
Um die Bilddaten aus der Anfrageantwort abzurufen, gibt es zwei Möglichkeiten:
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)
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)
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!