Olhando para a fonte de urllib2, parece que a maneira mais fácil de fazer isso seria subclasse HTTPRedirectHandler e, em seguida, usar build_opener para substituir o HTTPRedirectHandler padrão, mas isso parece muito (relativamente complicado) de trabalho para fazer o que parece que deveria ser bem simples.
96
Respostas:
Esta é a forma de Solicitações :
fonte
r.headers['Location']
para ver para onde isso o teria levadoLocation
paralocation
.requests
permite que você acesse os cabeçalhos tanto na forma canônica quanto em minúsculas. Veja docs.python-requests.org/en/master/user/quickstart/…Dive Into Python tem um bom capítulo sobre como lidar com redirecionamentos com urllib2. Outra solução é httplib .
fonte
Este é um manipulador urllib2 que não seguirá os redirecionamentos:
fonte
A
redirections
palavra-chave nohttplib2
método de solicitação é uma pista falsa. Em vez de retornar a primeira solicitação, ele gerará umaRedirectLimit
exceção se receber um código de status de redirecionamento. Para retornar a resposta inicial, você precisa definirfollow_redirects
comoFalse
noHttp
objeto:fonte
suponho que isso ajudaria
fonte
Segui a indicação de olt para Dive into Python . Aqui está uma implementação usando manipuladores de redirecionamento urllib2, mais trabalho do que deveria? Talvez, dê de ombros.
fonte
O caminho mais curto, entretanto, é
fonte
opener = urllib.request.build_opener(debugHandler, NoRedirect())
ondedebugHandler=urllib.request.HTTPHandler()
edebugHandler.set_http_debuglevel (1)
. No final:urllib.request.install_opener(opener)