如何使用Python计算网页(url)的大小。我尝试了urllib2并抓住了内容长度标题,但它不存在。
import urllib2
url = 'http://www.google.com/'
r = urllib2.urlopen(url)
#Not sure what to do from here
答案 0 :(得分:5)
当你使用urlopen
时,你将要求整个内容(一个HTTP GET请求),所以一旦你走了那样,寻找可选的内容长度标题并不是那么有用(没关系) ,节省你一些时间和内存,但你已经在服务器和网络上施加了可避免的负载)。尽管如此,正如现有答案所示,即使缺少内容长度,len
的{{1}}结果的read()
也是可行的方式。
唉,urllib2不支持HEAD http方法。要尝试HEAD,您必须使用较低级别的模块httplib(与服务器建立连接,调用其urlopen
方法,调用其request('HEAD', url)
以获取HttpResponse对象,调用后者的getresponse
方法获取内容长度标题...你明白为什么我说模块是低级别的;-)。如果你正在处理非常大的页面和敏感的服务器(那些设置内容长度标题的服务器),这可能是一个重要的优化。
答案 1 :(得分:3)
Content-Length
是可选的;使用它,如果它存在,减少带宽使用,但如果服务器没有发送它(或由于某种原因你不信任它),你将不得不检索整个资源并计算其长度。 / p>
print len(r.read())
答案 2 :(得分:0)
我是这样做的。请参阅下面的代码。
import urllib2
url = 'http://www.ueseo.org'
r = urllib2.urlopen(url)
print len(r.read())