2010-08-30 63 views

回答

12
import urllib2 
f = urllib2.urlopen("http://your-url") 
size= f.headers["Content-Length"] 
print size 
+4

HTTP HEAD是更好的选择。所以你不需要下载有效载荷。 – 2010-08-30 21:20:15

+0

但使用'requests'模块,如果我检索到的文件大小与从urlOpen得到的不同,请参阅:'>>> requests.head(url).headers.get('content-length',None) ' 8176' >>> urllib.urlopen(url).info()['content-length'] '38227' >>> len(requests.get(url).content) 38274' – 2014-07-05 09:46:55

10

HTTP HEAD method是为像这样的场景而发明的(希望了解有关响应的数据而无需获取响应本身)。如果服务器返回Content-Length header(并支持HEAD),则可以通过查看返回的Content-Length来找出文件的大小(以八位字节为单位)。

4

并非所有页面都有内容长度标题。在这种情况下,唯一的办法是阅读整个页面:

len(urllib2.urlopen('http://www.google.com').read()); 
+0

Greate!大多数商业网站没有内容长度标题! – harryz 2013-12-28 14:09:03

5

在这里,完整的答案:

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 
+0

写起来并不难,但这是一个很好的答案。 +1。欢迎来到stackoverflow! – eyquem 2011-04-27 11:23:10