>>> 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。我的脚本是否首先下载文件,然后检查它?或者,它可以立即检查错误代码而不保存文件吗?
答案 0 :(得分:16)
您希望实际告诉服务器不发送文件的完整内容。 HTTP有一种称为“HEAD”的机制,它是“GET”的替代品。它的工作方式相同,但服务器只向您发送标题,而不是实际内容。
这样可以节省至少一个带宽,而只是不进行读取()只会打扰获取整个文件。
试试这个:
import httplib
c = httplib.HTTPConnection(<hostname>)
c.request("HEAD", <url>)
print c.getresponse().status
将打印状态代码。网址应该只是一个细分受众群,例如“/ foo”,主机名应该像“www.example.com”。
答案 1 :(得分:1)
是的,它会获取文件。
我认为你真正想做的是发送一个HTTP HEAD请求(它基本上要求服务器不是数据本身,而是仅用于头部)。你可以看here。
答案 2 :(得分:0)
我认为您的代码已经这样做了。 你永远不会在响应上调用read()方法,所以你永远不会真正下载文件的内容。
更好......你可以使用httplib发送HTTP HEAD请求,而不是执行你的urllib代码所做的HTTP GET。