Вы не должны проверять код состояния после перехвата URLError
, поскольку это исключение может возникать в ситуациях, когда код состояния HTTP недоступен, например, когда вы получаете сообщения об отказе в соединении.
Используйте HTTPError
для проверки ошибок HTTP, а затем используйте URLError
для проверки других проблем:
try:
urllib2.urlopen(url)
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.args
Конечно, вы, вероятно, захотите сделать что-то более умное, чем просто распечатать коды ошибок, но вы поняли идею.