Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die endgültige URL nach Weiterleitungen mithilfe von Python-Anfragen erhalten?

Wie kann ich die endgültige URL nach Weiterleitungen mithilfe von Python-Anfragen erhalten?

DDD
DDDOriginal
2024-11-13 02:06:02886Durchsuche

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

Umgeleitete URLs mit Python-Anfragen abrufen

Requests, eine beliebte Python-Bibliothek zum Senden von HTTP-Anfragen, ermöglicht es Benutzern, Weiterleitungen durch Festlegen von „allow_redirects“ zu verarbeiten Parameter auf True. Dadurch wird zwar das Problem der automatischen Weiterleitungen behoben, Sie wissen jedoch nichts über die Ziel-URL. Bei dieser Frage geht es darum, wie man nach einer Reihe von Weiterleitungen die endgültige URL erhält.

Die Lösung liegt im Attribut „response.history“. Nach einer erfolgreichen Anfrage gibt „response.url“ die endgültige URL zurück, während „response.history“ eine Liste aller Zwischenantworten und ihrer jeweiligen URLs bereitstellt. Anhand dieser Daten können Sie die Weiterleitungen überprüfen und das endgültige Ziel bestimmen.

Der folgende Codeausschnitt veranschaulicht diesen Ansatz:

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")

Dieser Code prüft, ob das Attribut „response.history“ nicht leer ist , was auf das Auftreten von Weiterleitungen hinweist. Jedes resp-Objekt im Verlauf enthält den Statuscode und die URL einer Zwischenantwort. Schließlich stellt „response.url“ die endgültige URL bereit.

Betrachten Sie das folgende Beispiel:

>>> 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

Diese Ausgabe bestätigt, dass die Anfrage dreimal umgeleitet wurde, bevor sie das endgültige Ziel unter http:// erreichte. httpbin.org/get bietet ein vollständiges Bild der Weiterleitungskette.

Das obige ist der detaillierte Inhalt vonWie kann ich die endgültige URL nach Weiterleitungen mithilfe von Python-Anfragen erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn