Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir l'URL finale après les redirections à l'aide de requêtes Python ?

Comment puis-je obtenir l'URL finale après les redirections à l'aide de requêtes Python ?

DDD
DDDoriginal
2024-11-13 02:06:02947parcourir

How can I get the final URL after redirects using Python Requests?

Récupération d'URL redirigées avec des requêtes Python

Requests, une bibliothèque Python populaire pour l'envoi de requêtes HTTP, permet aux utilisateurs de gérer les redirections en définissant le paramètre allow_redirects paramètre sur True. Bien que cela résolve le problème des redirections automatiques, cela vous laisse ignorer l’URL cible. Cette question explique comment obtenir l'URL finale après une série de redirections.

La solution réside dans l'attribut réponse.history. Après une requête réussie, Response.url renvoie l'URL finale, tandis que Response.history fournit une liste de toutes les réponses intermédiaires et de leurs URL respectives. À l'aide de ces données, vous pouvez inspecter les redirections et déterminer la destination finale.

L'extrait de code suivant illustre cette approche :

import requests

response = requests.get(someurl, allow_redirects=True)
if response.history:
    print("Request was redirected")
    for resp in response.history:
        print(resp.status_code, resp.url)
    print("Final destination:")
    print(response.status_code, response.url)
else:
    print("Request was not redirected")

Ce code vérifie si l'attribut réponse.history n'est pas vide. , indiquant l'apparition de redirections. Chaque objet resp de l'historique contient le code d'état et l'URL d'une réponse intermédiaire. Enfin, réponse.url fournit l'URL finale.

Considérons l'exemple suivant :

>>> import requests
>>> response = requests.get('http://httpbin.org/redirect/3')
>>> response.history
(<Response [302]>, <Response [302]>, <Response [302]>)
>>> for resp in response.history:
...     print(resp.status_code, resp.url)
... 
302 http://httpbin.org/redirect/3
302 http://httpbin.org/redirect/2
302 http://httpbin.org/redirect/1
>>> print(response.status_code, response.url)
200 http://httpbin.org/get

Cette sortie confirme que la demande a été redirigée trois fois avant d'atteindre la destination finale à l'adresse http:// httpbin.org/get, fournissant une image complète de la chaîne de redirection.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn