J'ai parcouru la documentation des demandes Python mais je ne vois aucune fonctionnalité pour ce que j'essaie de réaliser.
Dans mon script, je suis en train de définir allow_redirects=True
.
Je voudrais savoir si la page a été redirigée vers autre chose, quelle est la nouvelle URL.
Par exemple, si l'URL de démarrage était: www.google.com/redirect
Et l'URL finale est www.google.co.uk/redirected
Comment obtenir cette URL?
python
http
redirect
python-requests
Daniel Pilch
la source
la source
urllib2
Réponses:
Vous recherchez l' historique des demandes .
L'
response.history
attribut est une liste de réponses qui ont conduit à l'URL finale, qui peut être trouvée dansresponse.url
.Démo:
la source
Cela répond à une question légèrement différente, mais comme je suis resté coincé moi-même, j'espère que cela pourrait être utile pour quelqu'un d'autre.
Si vous souhaitez utiliser
allow_redirects=False
et accéder directement au premier objet de redirection, plutôt que de suivre une chaîne d'entre eux, et que vous souhaitez simplement obtenir l'emplacement de la redirection directement à partir de l'objet de réponse 302,r.url
cela ne fonctionnera pas. Au lieu de cela, il s'agit de l'en-tête "Location":la source
r.next
? Je pensais que cela contiendrait unPreparedRequest
pointant vers l'URL de redirection, mais cela ne semble pas être le cas ...la documentation a ce blurb https://requests.readthedocs.io/en/master/user/quickstart/#redirection-and-history
la source
Je pense que requests.head au lieu de requests.get sera plus sûr à appeler lors de la gestion de la redirection d'url, vérifiez le problème github ici :
la source
Pour python3.5, vous pouvez utiliser le code suivant:
la source