如果下载的数据是gzip的编码,内容长度和数据的总长度在for data in response.iter_content():
加入他们后,我有在Python progress bar and downloadsPython3进度条和用gzip
陈述的答案有点问题下载是不同的,因为在它是更大的原因自动解压缩gzip编码应答
所以杆越来越长,一旦成为长为单个线,就开始淹没的终端
一个工作示例问题(该网站是我在google上发现的第一个网站帽子有两个内容长度和gzip编码):
import requests,sys
def test(link):
print("starting")
response = requests.get(link, stream=True)
total_length = response.headers.get('content-length')
if total_length is None: # no content length header
data = response.content
else:
dl = 0
data = b""
total_length = int(total_length)
for byte in response.iter_content():
dl += len(byte)
data += (byte)
done = int(50 * dl/total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)))
sys.stdout.flush()
print("total data size: %s, content length: %s" % (len(data),total_length))
test("http://www.pontikis.net/")
ps的,我是在Linux,但它应该影响其他操作系统太(除Windows引起\ R没有它IIRC工作)
和我使用的cookies(和gzip)处理因此与urllib而其他模块的解决方案requests.Session是不是我期待的
如果你的问题是请求自动解压缩数据,你可能不应该使用请求。由于您没有进行任何身份验证,因此标准的urllib.request应该可能没问题。然后,您可以使用工作进度条检索数据,并在文件完全下载时使用zlib模块将其解压缩。 – Kritzefitz
我需要在登录后使用发布请求来坚持cookie,因为我正在做什么这就是为什么我说request.session,也是为什么我说urllib的解决方案不是我在找什么 –
哦,对不起。最后没有看到。 – Kritzefitz