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

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

DDD
发布: 2024-12-18 10:19:13
原创
267 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板