Python リクエストを使用してリダイレクト後の最終 URL を取得するにはどうすればよいですか?

DDD
リリース: 2024-11-13 02:06:02
オリジナル
834 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート