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
Libérer: 2024-11-13 02:06:02
original
916 Les gens l'ont consulté

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")
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal