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

如何使用Python的Requests库高效下载图片?

Linda Hamilton
发布: 2025-01-02 22:12:41
原创
1010 人浏览过

How to Efficiently Download Images Using Python's Requests Library?

使用请求下载图像

使用 Python 的 requests 模块从网络下载图像可能是一项简单的任务。然而,当从 urllib2 切换到 requests 时,了解用于检索图像数据的属性的差异至关重要。

最初,使用 urllib2 的代码使用 img.read() 读取图像,而所需的图像请求方法有 img = r.raw.read()。这是错误的,因为 r.raw 是一个文件对象,而不是实际的图像数据。

要解决此问题,有两种可行的解决方案:

  • 使用Response.raw 文件对象:

    将decode_content 设置为True 以强制解压缩压缩响应。这允许您使用 Shutil.copyfileobj() 将数据流式传输到文件对象。

    import requests
    import shutil
    
    r = requests.get(url, 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(url, 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(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            for chunk in r.iter_content(1024):
                f.write(chunk)
    登录后复制

请记住以二进制模式('wb')打开目标文件以防止换行符被翻译。另外,设置stream=True可以防止整个图像被下载到内存中。

以上是如何使用Python的Requests库高效下载图片?的详细内容。更多信息请关注PHP中文网其他相关文章!

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