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

TIM*_*MEX 4 python http

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

我的问题是... bigvideo.avi是500MB.我的脚本是否首先下载文件,然后检查它?或者,它可以立即检查错误代码而不保存文件?

Ken*_*der 16

您希望实际告诉服务器不要发送文件的完整内容.HTTP有一种称为"HEAD"的机制,它是"GET"的替代品.它的工作方式相同,但服务器只向您发送标题,而不是实际内容.

这将节省至少一个带宽,而只是不做read()只会打扰获取完整的文件.

试试这个:

import httplib
c = httplib.HTTPConnection(<hostname>)
c.request("HEAD", <url>)
print c.getresponse().status
Run Code Online (Sandbox Code Playgroud)

将打印状态代码.网址应该只是一个细分受众群,例如"/ foo",主机名应该是"www.example.com".