Python のリクエスト モジュールを使用してインターネットから画像をダウンロードしようとすると、urllib2 の urlopen を使用する場合と比較してコードで問題が発生する可能性があります。方法。この記事では、これらの課題に対処し、解決策を示します。
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)
問題画像データを含むレスポンスの属性が urlopen の属性と異なるため、リクエストを使用するときに発生します。 urllib2.
リクエストの応答から画像データを取得するには、次の 2 つのオプションがあります:
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)
リクエストの呼び出しで stream=True を設定すると、イメージ全体が一度にメモリにダウンロードされなくなります。エラーを避けるために、ファイルはバイナリ モードで開く必要があります。
以上がPython の「requests」モジュールを使用して画像を適切にダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。