如何从python urllib的urlopen获取HTTP返回码?

时间:2013-02-10 09:01:18

标签: python urllib python-2.5

我有以下代码:

f = urllib.urlopen(url)
html = f.read()

我想知道打开上面网址时出现的HTTP状态代码(HTTP 200,404等)。

有人知道怎么做吗?

P.S。 我使用python 2.5。

感谢!!!

2 个答案:

答案 0 :(得分:11)

您可以使用.getcode()

返回的对象的urlopen()方法
url = urllib.urlopen('http://www.stackoverflow.com/')
code = url.getcode()

答案 1 :(得分:3)

getcode()仅在Python 2.6中添加。据我所知,没有办法从2.5中的请求本身获取状态代码,但FancyURLopener提供了一组函数,可以调用某些错误代码 - 您可以使用它来保存状态代码。我将其分类告诉我404何时发生

import urllib

class TellMeAbout404s(urllib.FancyURLopener):
    def http_error_404(self, url, fp, errcode, errmsg, headers, data=None):
        print("==== Got a 404")

opener = TellMeAbout404s()
f = opener.open("http://www.google.com/sofbewfwl")
print(f.info())

info()提供HTTP标头,但不提供状态代码。