如何在不下载的情况下检查对象的HTTP状态代码?

2024-05-23 13:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> a=urllib.urlopen('http://www.domain.com/bigvideo.avi')
>>> a.getcode()
404
>>> a=urllib.urlopen('http://www.google.com/')
>>> a.getcode()
200

我的问题是。。。大视频.avi是500MB。我的脚本是否先下载文件,然后检查它?或者,它可以在不保存文件的情况下立即检查错误代码吗?在


Tags: 文件脚本comhttp视频domainwwwgoogle
3条回答

我想你的代码已经做到了。 您从来没有对响应调用read()方法,因此您从未实际下载文件的内容。在

更好的是。。。可以使用httplib发送httphead请求,而不是像urllib代码那样执行httpget。在

是的,它将获取文件。在

我认为您真正想要做的是发送一个httphead请求(它基本上不是向服务器请求数据本身,而是只请求头)。你可以看here。在

您需要实际告诉服务器而不是发送文件的完整内容。HTTP有一种称为“HEAD”的机制来代替“GET”。它的工作原理是一样的,但是服务器只向您发送标题,而不是实际的内容。在

这样至少可以节省一个带宽,而只需不执行read()操作就不会麻烦您获取完整的文件。在

试试这个:

import httplib
c = httplib.HTTPConnection(<hostname>)
c.request("HEAD", <url>)
print c.getresponse().status

将打印状态代码。Url只能是一个段,如“/foo”,主机名应该是“,”www.example.com网站". 在

相关问题 更多 >