requests.HTTPError no se detectó después de un requests.get () 404 response

Estoy teniendo un pequeño problema con la biblioteca de solicitudes.

Por ejemplo, tengo una statement como esta en Python:

try: request = requests.get('google.com/admin') #Should return 404 except requests.HTTPError, e: print 'HTTP ERROR %s occured' % e.code 

Por alguna razón la excepción no está siendo atrapada. He revisado la documentación de la API para las solicitudes, pero es un poco escasa. ¿Hay alguien que tenga más experiencia con la biblioteca que pueda ayudarme?

Intérprete es tu amigo:

 import requests requests.get('google.com/admin') # MissingSchema: Invalid URL u'google.com/admin': No schema supplied 

Además, requests excepciones:

 import requests.exceptions dir(requests.exceptions) 

También tenga en cuenta que, de forma predeterminada, las requests no generan excepciones si el estado no es 200 :

 In [9]: requests.get('https://google.com/admin') Out[9]:  

Hay un método raise_for_status () que lo hace:

 In [10]: resp = requests.get('https://google.com/admin') In [11]: resp Out[11]:  In [12]: resp.raise_for_status() ... HTTPError: 503 Server Error: Service Unavailable 

Ejecutando tu código en python 2.7.5:

 import requests try: response = requests.get('google.com/admin') #Should return 404 except requests.HTTPError, e: print 'HTTP ERROR %s occured' % e.code print e 

Resultados en:

File "C:\Python27\lib\site-packages\requests\models.py", line 291, in prepare_url raise MissingSchema("Invalid URL %r: No schema supplied" % url) requests.exceptions.MissingSchema: Invalid URL u'google.com/admin': No schema supplied

Para obtener su código para recoger esta excepción, debe agregar:

  except (requests.exceptions.MissingSchema) as e: print 'Missing schema occured. status' print e 

Tenga en cuenta también que no es un esquema faltante, sino un esquema faltante.