Python urllib2 URLError HTTP状态代码.

Hel*_*nar 31 python exception urllib2

我想在引发URLError异常后抓取HTTP状态代码:

我尝试了这个,但没有帮助:

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

Pär*_*der 63

捕获后不应检查状态代码URLError,因为在没有HTTP状态代码可用的情况下可以引发该异常,例如当您收到连接拒绝错误时.

使用HTTPError检查HTTP特定的错误,然后用URLError检查其他问题:

try:
    urllib2.urlopen(url)
except urllib2.HTTPError, e:
    print e.code
except urllib2.URLError, e:
    print e.args
Run Code Online (Sandbox Code Playgroud)

当然,你可能想要做一些比打印错误代码更聪明的事情,但你明白了.

  • 为了100%安全,您可能还需要检查ValueError,因为当输入的URL无效或空白时,urllib2.urlopen将抛出ValueError异常. (2认同)