Python urllib2: ¿leer el cuerpo del contenido incluso durante la excepción HTTPError?


76

Estoy usando urllib2 para obtener una página a través de HTTP. A veces, el recurso arroja un error HTTP 400 (solicitud incorrecta) cuando mi solicitud contiene un error. Sin embargo, esa respuesta también contiene un elemento XML que proporciona un mensaje de error detallado. Sería muy útil poder ver ese error en lugar de solo la excepción HTTPError devuelta por urllib2.

¿Cómo devuelvo el contenido del documento a pesar de la excepción?


Respuestas:



87
import urllib2
try:
    request = urllib2.Request('http://www.somesite.com')
    response = urllib2.urlopen(req)
except urllib2.HTTPError as e:
    error_message = e.read()
    print error_message

0

Puede readel mensaje de respuesta de la excepción HTTPError.

Ejemplo de Python3

import urllib.request

try:
    request = urllib.request.Request('http://httpstat.us/418', headers={'Accept': 'text/plain', 'User-Agent': ''})
    with urllib.request.urlopen(request) as page:
        print('success: ' + page.read().decode())
except urllib.error.HTTPError as httpError:
        error = httpError.read().decode()
        print('error: ' + error)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.