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()