Mirando la fuente de urllib2, parece que la forma más fácil de hacerlo sería subclase HTTPRedirectHandler y luego usar build_opener para anular el HTTPRedirectHandler predeterminado, pero esto parece una gran cantidad de trabajo (relativamente complicado) para hacer lo que parece que debería ser bastante simple.
96
Respuestas:
Aquí está la forma de Solicitudes :
fuente
r.headers['Location']
para ver a dónde te habría enviadoLocation
alocation
.requests
te permite acceder a los encabezados tanto en forma canónica como en minúsculas. Ver docs.python-requests.org/en/master/user/quickstart/…Dive Into Python tiene un buen capítulo sobre el manejo de redireccionamientos con urllib2. Otra solución es httplib .
fuente
Este es un controlador urllib2 que no seguirá las redirecciones:
fuente
La
redirections
palabra clave en elhttplib2
método de solicitud es una pista falsa. En lugar de devolver la primera solicitud, generará unaRedirectLimit
excepción si recibe un código de estado de redirección. Para devolver la respuesta inital Es necesario que ajustefollow_redirects
aFalse
laHttp
del objeto:fuente
supongo que esto ayudaría
fuente
En segundo lugar, el puntero de olt es Dive into Python . Aquí hay una implementación que usa controladores de redireccionamiento urllib2, ¿más trabajo del que debería ser? Quizás, encogerse de hombros.
fuente
Sin embargo, el camino más corto es
fuente
opener = urllib.request.build_opener(debugHandler, NoRedirect())
dóndedebugHandler=urllib.request.HTTPHandler()
ydebugHandler.set_http_debuglevel (1)
. Al final:urllib.request.install_opener(opener)