在Python3x中,如何在下载文件之前获得内容长度等标题?这
import urllib.request
aaa, bbb = urllib.request.urlretrieve(url, file_name)
bbb['Content-Length']
# or
ccc, ddd = urllib.request.urlretrieve(url)
ddd['Content-Length']似乎它首先下载了整个文件,然后返回它的头。我认为是这样,因为这需要大量的时间,并且返回临时文件的名称(第二种情况)或真正的名称(第一种情况)。
还是我错了?
我想要的是先检索内容,然后根据某些条件下载、保存或不使用它。
发布于 2015-10-23 19:37:47
HTTP有一个名为头的特殊方法,它告诉服务器只发送头部(如果有的话包括Content-Length ),并在发送实际内容之前停止。
但是要告诉urllib使用HEAD方法,您应该切换到较新的urlopen函数:
from urllib.request import Request, urlopen
resp = urlopen(Request('http://httpbin.org/html', method='HEAD'))
headers = resp.info()
print(headers['Content-Length'])确切地说,HTTP规范不需要Content-Length来响应HEAD请求(或者根本不需要),但是大多数服务器,特别是那些提供文件的服务器,都会包括它。
https://stackoverflow.com/questions/33309914
复制相似问题