82 votes

Comment puis-je détecter une erreur HTTP spécifique dans Python ?

J'ai

import urllib2
try:
   urllib2.urlopen("some url")
except urllib2.HTTPError:
   <whatever>

mais ce que je finis par attraper est n'importe quel type d'erreur HTTP. Je veux attraper seulement si la page Web spécifiée n'existe pas (404 ?).

143voto

Tim Pietzcker Points 146308

Python 3

from urllib.error import HTTPError

Python 2

from urllib2 import HTTPError

Il suffit d'attraper HTTPError, de le gérer, et s'il ne s'agit pas de l'erreur 404, il suffit d'utiliser raise pour relever à nouveau l'exception.

Voir le tutoriel Python.

Voici un exemple complet pour Python 2 :

import urllib2
from urllib2 import HTTPError
try:
   urllib2.urlopen("some url")
except HTTPError as err:
   if err.code == 404:
       <whatever>
   else:
       raise

45voto

Lazik Points 159

Pour Python 3.x

import urllib.request
from urllib.error import HTTPError
try:
    urllib.request.urlretrieve(url, fullpath)
except urllib.error.HTTPError as err:
    print(err.code)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X