【发布时间】:2010-08-30 14:25:26
【问题描述】:
我想在下载之前获取 http://.. 文件的大小。 我不知道如何使用http请求。
谢谢!
【问题讨论】:
我想在下载之前获取 http://.. 文件的大小。 我不知道如何使用http请求。
谢谢!
【问题讨论】:
import urllib2
f = urllib2.urlopen("http://your-url")
size= f.headers["Content-Length"]
print size
【讨论】:
requests 模块如果我检索到的文件大小与从 urlOpen 获得的不同,请参阅:>>> requests.head(url).headers.get('content-length', None) '8176' >>> urllib.urlopen(url).info()['content-length'] '38227' >>> len(requests.get(url).content) 38274
HTTP HEAD method 是为这样的场景而发明的(想要了解有关响应的数据而不获取响应本身)。如果服务器返回一个Content-Length header(并支持HEAD),那么您可以通过查看返回的Content-Length 找出文件的大小(以八位字节为单位)。
【讨论】:
这里是完整的答案:
import urllib2
f = urllib2.urlopen ("http://your-url")
if "Content-Length" in f.headers:
size = int (f.headers["Content-Length"])
else:
size = len (f.read ());
print size
【讨论】:
并非所有页面都有内容长度标题。在这种情况下,唯一的选择是阅读整个页面:
len(urllib2.urlopen('http://www.google.com').read());
【讨论】: