2009-10-23 93 views
1

我该如何去计算使用Python的网页大小(url)。我尝试urllib2并抓取内容长度标题,但它不存在。使用Python计算网页大小

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

回答

5

当您使用urlopen,你要申请的全部内容(HTTP GET请求),以便寻找可选内容长度的头是不是所有的有用的,一旦你已经走了这样(它是确定,为您节省了一些时间和内存,但是您在服务器和网络上施加了可避免的负载)。不过,正如现有答案所指出的那样,urlopen的结果read()len即使在缺少内容长度的情况下也能正常工作。

唉,urllib2不支持HEAD http方法。要尝试HEAD,您必须使用底层模块httplib(与服务器建立连接,调用其request('HEAD', url)方法,调用其getresponse以获取HttpResponse对象,然后调用getheader方法获取内容长度标头。 ..你明白为什么我说这个模块是低级的;-)。如果你正在处理非常大的页面和合理的服务器(那些设置内容长度标题的服务器),这虽然很麻烦,但可能是一个重要的优化。

3

Content-Length是可选的;如果它存在,就使用它来减少带宽使用,但是如果服务器没有发送它(或者出于某种原因你不信任它),你将不得不检索整个资源并计算它的长度。

print len(r.read()) 
0

这是我做到的。请参阅下面的代码。

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