ホームページ  >  記事  >  バックエンド開発  >  Python リクエストを使用してリダイレクト後の最終 URL を決定するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-11 12:32:02956ブラウズ

How Do I Determine the Final URL After Redirection Using Python Requests?

Python リクエスト ライブラリを使用したリダイレクト後の新しい URL の決定

Python リクエスト ライブラリは HTTP リクエストの処理に優れていますが、そのリダイレクト メカニズムを理解することが重要です最終的なランディング ページにアクセスするため。 allow_redirects=True を設定すると、ライブラリはリダイレクト チェーンを通じてリクエストに従います。ただし、リダイレクトされた新しい URL を取得するには、リクエストの履歴を詳しく調べる必要があります。

response.history 属性には、リクエスト中に発生したすべてのリダイレクト レスポンスの記録が保持されます。履歴リスト内の各応答には、ステータス コードとリダイレクト先の URL が含まれます。リストの最後の項目は、response.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 = 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

このデモでは、リダイレクト チェーンをたどり、各リダイレクトのステータス コードと URL を表示し、最終的に最終的な宛先を表示するプロセスを示します。 response.history を利用すると、リクエストがリダイレクトされた後に新しい URL を簡単に抽出できます。

以上がPython リクエストを使用してリダイレクト後の最終 URL を決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。