libreria httperror from example python urllib2 urllib http-error

python - from - Sobreescribiendo urllib2.HTTPError o urllib.error.HTTPError y leyendo HTML de respuesta de todos modos



urllib2 httperror python (3)

Si quieres decir que quieres leer el cuerpo del 500:

request = urllib2.Request(url, data, headers) try: resp = urllib2.urlopen(request) print resp.read() except urllib2.HTTPError, error: print "ERROR: ", error.read()

En su caso, no necesita compilar la solicitud. Solo haz

try: resp = urllib2.urlopen(url) print resp.read() except urllib2.HTTPError, error: print "ERROR: ", error.read()

por lo tanto, no anula urllib2.HTTPError, solo maneja la excepción.

Recibo una respuesta ''HTTP Error 500: Internal Server Error'', pero aún quiero leer los datos dentro del error HTML.

Con Python 2.6, normalmente obtengo una página usando:

import urllib2 url = "http://google.com" data = urllib2.urlopen(url) data = data.read()

Cuando intento usar esto en la URL que falla, obtengo la excepción urllib2.HTTPError :

urllib2.HTTPError: HTTP Error 500: Internal Server Error

¿Cómo puedo buscar esas páginas de error (con o sin urllib2 ), todo mientras devuelven los errores internos del servidor?

Tenga en cuenta que con Python 3, la excepción correspondiente es urllib.error.HTTPError .


HTTPError es un objeto similar a un archivo . Puede atraparlo y luego read su contenido.

try: resp = urllib2.urlopen(url) contents = resp.read() except urllib2.HTTPError, error: contents = error.read()


alist=[''http://someurl.com''] def testUrl(): errList=[] for URL in alist: try: urllib2.urlopen(URL) except urllib2.URLError, err: (err.reason != 200) errList.append(URL+" "+str(err.reason)) return URL+" "+str(err.reason) return "".join(errList) testUrl()