2010-08-30 67 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