使用 Python 中的 Requests 模块下载图像
为了使用 requests 模块从网络下载并保存图像,开发人员遇到困难。提供的代码最初可以工作,但是使用 requests 修改后的代码会导致错误。
该错误是由于使用了请求响应中的不正确属性而导致的。要使用请求成功检索图像,有两种选择:
使用response.raw文件对象
利用response.raw属性返回原始数据回复。解码压缩响应(例如,使用 GZIP 或 deflate)不会自动处理。要强制解压,请将decode_content 属性设置为True。随后,使用 Shutil.copyfileobj() 将数据流式传输到文件对象。
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)
迭代响应
另一种方法涉及迭代响应,确保数据解压缩。
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)
可以使用以下命令自定义块大小Response.iter_content() 方法。
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)
请记住以二进制模式打开目标文件以防止换行符转换并设置stream=True 以避免占用内存的完整下载。
以上是如何利用Python的Requests模块高效下载图片?的详细内容。更多信息请关注PHP中文网其他相关文章!