web-dev-qa-db-fra.com

Python urllib2 URLError code d'état HTTP.

Je veux récupérer le code d'état HTTP une fois qu'il déclenche une exception URLError:

J'ai essayé mais je n'ai pas aidé:

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

Vous ne devriez pas vérifier un code d'état après avoir attrapé URLError, car cette exception peut être déclenchée dans des situations où aucun code d'état HTTP n'est disponible, par exemple lorsque vous obtenez des erreurs de connexion refusée.

Utilisez HTTPError pour rechercher des erreurs spécifiques HTTP, puis utilisez URLError pour rechercher d'autres problèmes:

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

Bien sûr, vous voudrez probablement faire quelque chose de plus intelligent que d'imprimer simplement les codes d'erreur, mais vous avez l'idée.

62
Pär Wieslander

Vous ne savez pas pourquoi vous obtenez cette erreur. Si vous utilisez urllib2 cela devrait aider:

import urllib2
from urllib2 import URLError

try:
    urllib2.urlopen(url)
except URLError, e:
    print e.code
2
Manoj Govindan