在Python中计算网页大小

2 投票
3 回答
5967 浏览
提问于 2025-04-15 15:18

我想知道怎么用Python来计算一个网页(网址)的大小。我试过用urllib2去获取内容长度的头信息,但发现没有这个信息。

import urllib2
url = 'http://www.google.com/'
r = urllib2.urlopen(url)
#Not sure what to do from here

3 个回答

0

这是我怎么做的。请看下面的代码。

import urllib2
url = 'http://www.ueseo.org'
r = urllib2.urlopen(url)
print len(r.read())
3

Content-Length 是一个可选的字段;如果有这个字段,可以用它来减少带宽的使用。但如果服务器没有发送这个字段(或者你出于某种原因不信任它),你就需要获取整个资源,然后自己计算它的长度。

print len(r.read())
5

当你使用 urlopen 时,其实是在请求整个内容(这是一种HTTP GET请求),所以在这种情况下,查看可选的内容长度头信息就没什么太大用处了(虽然这样做可以节省一些时间和内存,但你还是给服务器和网络带来了不必要的负担)。不过,正如已有的回答所说,即使没有内容长度头,你也可以通过 urlopen 的结果的 read() 方法来获取内容的长度。

可惜的是,urllib2 不支持 HEAD 这种HTTP方法。如果想要使用 HEAD,你得用一个更底层的模块 httplib(你需要先与服务器建立连接,然后调用它的 request('HEAD', url) 方法,再调用 getresponse 来获取一个HttpResponse对象,最后在这个对象上调用 getheader 方法来获取内容长度头信息……你看,这就是我说这个模块比较底层的原因;-)。如果你处理的是非常大的网页,并且服务器设置了内容长度头,这种方法虽然有点麻烦,但可能会是一个重要的优化。

撰写回答