Estive olhando a documentação de solicitações do Python, mas não consigo ver nenhuma funcionalidade para o que estou tentando alcançar.
No meu script estou configurando allow_redirects=True
.
Gostaria de saber se a página foi redirecionada para outra coisa, qual é a nova URL.
Por exemplo, se o URL inicial fosse: www.google.com/redirect
E o URL final é www.google.co.uk/redirected
Como faço para obter esse URL?
python
http
redirect
python-requests
Daniel Pilch
fonte
fonte
urllib2
Respostas:
Você está procurando o histórico de solicitações .
O
response.history
atributo é uma lista de respostas que levam ao URL final, que pode ser encontrada emresponse.url
.Demo:
fonte
Isso está respondendo a uma pergunta um pouco diferente, mas como também fiquei preso nisso, espero que possa ser útil para outra pessoa.
Se você deseja usar
allow_redirects=False
e ir diretamente para o primeiro objeto de redirecionamento, em vez de seguir uma cadeia deles, e deseja apenas obter o local de redirecionamento diretamente do objeto de resposta 302,r.url
isso não funcionará. Em vez disso, é o cabeçalho "Local":fonte
r.next
? Achei que conteria umPreparedRequest
apontando para o URL de redirecionamento, mas não parece ser o caso ...a documentação tem este blurb https://requests.readthedocs.io/en/master/user/quickstart/#redirection-and-history
fonte
Acho que request.head em vez de requests.get será mais seguro chamar ao lidar com o redirecionamento de url, verifique o problema do github aqui :
fonte
Para python3.5, você pode usar o seguinte código:
fonte