如何在不下载对象的情况下检查其HTTP状态代码?
问题内容:
>>> a=urllib.urlopen('http://www.domain.com/bigvideo.avi')
>>> a.getcode()
404
>>> a=urllib.urlopen('http://www.google.com/')
>>> a.getcode()
200
我的问题是… bigvideo.avi是500MB。我的脚本会先下载文件,然后再检查文件吗?或者,是否可以立即检查错误代码而不保存文件?
问题答案:
您实际上想告诉服务器 不要 发送文件的全部内容。HTTP为此提供了一种称为“ HEAD”的机制,该机制可以替代“
GET”。它的工作方式相同,但是服务器仅向您发送标头,而没有发送任何实际内容。
这样可以节省至少一个您的带宽,而只是不执行read()只会使您无心获取完整文件。
尝试这个:
import httplib
c = httplib.HTTPConnection(<hostname>)
c.request("HEAD", <url>)
print c.getresponse().status
状态代码将被打印。网址只能是一个段,例如“ / foo”,而主机名应该像“ www.example.com”。