为什么httplib和urllib返回的响应代码不匹配?
我正在写一个死链接检测器,想知道应该使用哪个库,httplib还是urllib,所以我两个都试了一下。
def http_response_code(url):
host = urlparse(url)[1]
req = '/'.join(urlparse(url)[2:5])
conn = httplib.HTTPConnection(host)
conn.request('HEAD', req)
res = conn.getresponse()
return res.status, res.reason
def urllib_response_code(url):
a = urllib.urlopen(url)
return a.getcode()
def main():
url = 'http://1010wins.com/content_page.php?contenttype=4&contentid=6077355'
print http_response_code(url)
print urllib_response_code(url)
但是我对这两种方法返回的结果不太明白,它们的结果是:
(302, '找到')
200
我觉得可能是因为urllib会自动检测重定向,并获取最终的目标页面,然后返回响应代码?
谢谢。
1 个回答
5
302
是一个HTTP状态码,表示需要重定向(你可以在 这里 查看详细信息)。而 httplib
这个底层库会准确地返回这个状态码,但 urllib
则会自动跟随这个重定向,并给你最终的状态码(如果一切正常,它会返回 200
)。
选择最适合你想要工作的库吧——httplib
给你更多的控制权,但它的功能比较有限(比如它不会处理其他协议的URL,如 ftp:
等等),而且它是一个底层库(所以你需要做更多的工作!)。