Python urllib2 URLError HTTP状态码。

32 投票
2 回答
62404 浏览
提问于 2025-04-16 02:40

我想在出现URLError异常时获取HTTP状态码:

我试过这个方法,但没有效果:

except URLError, e:
    logger.warning( 'It seems like the server is down. Code:' + str(e.code) )

2 个回答

2

我不太明白你为什么会遇到这个错误。如果你在使用 urllib2,那么这个可能会对你有帮助:

import urllib2
from urllib2 import URLError

try:
    urllib2.urlopen(url)
except URLError, e:
    print e.code
65

在捕获到 URLError 之后,你不应该再去检查状态码,因为这种错误可能在没有 HTTP 状态码的情况下出现,比如当你遇到连接被拒绝的错误时。

你可以使用 HTTPError 来检查与 HTTP 相关的错误,然后再用 URLError 来检查其他问题:

try:
    urllib2.urlopen(url)
except urllib2.HTTPError, e:
    print e.code
except urllib2.URLError, e:
    print e.args

当然,你可能想做一些比仅仅打印错误代码更聪明的事情,但你明白我的意思。

撰写回答