如何在不下载对象的情况下检查其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”。