Python 在抓取大图像期间,如何减少/限制带宽?

Python 在抓取大图像期间,如何减少/限制带宽?,python,web-scraping,python-requests,Python,Web Scraping,Python Requests,我打算下载大约1000万张图像,在下载前1000张图像的一个小实验后,我注意到每一张图像都需要4.5秒(这可能会在多处理.Pools中稍微加快),但最大的问题是平均图像大小约为2400x2400,约为2.2MB。我可以在下载后立即调整它们的大小,但主要的瓶颈(目前)是互联网带宽。有没有办法以较低的分辨率直接下载图像 示例虚拟代码: import requests resp = requests.get("some_url.jpg") with open(fn, 'wb') as f:

我打算下载大约1000万张图像,在下载前1000张图像的一个小实验后,我注意到每一张图像都需要4.5秒(这可能会在
多处理.Pool
s中稍微加快),但最大的问题是平均图像大小约为2400x2400,约为2.2MB。我可以在下载后立即调整它们的大小,但主要的瓶颈(目前)是互联网带宽。有没有办法以较低的分辨率直接下载图像

示例虚拟代码:

import requests

resp = requests.get("some_url.jpg")
with open(fn, 'wb') as f:
    f.write(resp.content)
减少 除非有其他分辨率较低的文件可用→ 不可以。除非服务器上有某种API或基本上任何你想从中下载文件(图像)的东西,在将内容作为响应发送回服务器之前在服务器上对其进行修改

您可以尝试的是检查网站是否支持
gzip
或其他压缩,并确保您先下载压缩的响应,例如使用,然后在保存文件之前解压缩,例如使用或

要强制执行,请尝试使用特定的编码,例如
接受编码

限制 为数据制作一个简单的计数器(您可以在处理或存储数据时计算字节数),如果您不想达到每5分钟超过100MB的数据量,那么只需为每个下载的100MB数据块放入
time.sleep()

小调
Thread
不会帮助您并行化工作,使用或喜欢真正将工作拆分为多个进程,以便您从(随机数)中获得(例如,每1分钟每个进程下载100个文件)到400个文件(4个进程同时下载100个文件)