ホームページ >バックエンド開発 >Python チュートリアル >Python リクエストを使用してリダイレクト後の最終 URL を取得するにはどうすればよいですか?
Python リクエストを使用したリダイレクトされた URL の取得
HTTP リクエストを送信するための一般的な Python ライブラリであるRequests を使用すると、ユーザーはallow_redirects を設定することでリダイレクトを処理できます。パラメータを True に設定します。これにより自動リダイレクトの問題は解決されますが、ターゲット URL が分からなくなります。この質問では、一連のリダイレクト後に最終 URL を取得する方法について説明します。
解決策は、response.history 属性にあります。リクエストが成功すると、response.url は最終 URL を返し、response.history はすべての中間レスポンスとそれぞれの URL のリストを提供します。このデータを使用すると、リダイレクトを検査し、最終的な宛先を決定できます。
次のコード スニペットは、このアプローチを示しています。
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")
このコードは、response.history 属性が空でないかどうかを確認します。 、リダイレクトの発生を示します。履歴内の各 resp オブジェクトには、ステータス コードと中間応答の URL が含まれています。最後に、response.url は最終 URL を提供します。
次の例を考えてみましょう:
>>> 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
この出力は、リクエストが http:// の最終宛先に到達するまでに 3 回リダイレクトされたことを確認します。 httpbin.org/get、リダイレクト チェーンの全体像を提供します。
以上がPython リクエストを使用してリダイレクト後の最終 URL を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。