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

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

Linda Hamilton
Linda Hamilton原创
2025-01-02 22:12:411047浏览

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

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