首页 >后端开发 >Python教程 >如何利用Python的Requests模块高效下载图片?

如何利用Python的Requests模块高效下载图片?

DDD
DDD原创
2024-12-18 10:19:13269浏览

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

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn