概要
リクエスト先のURLが302等でリダイレクトをされた場合に、リクエスト先のURLを取得したい。
バージョン情報
- requests==2.21.0
ソースコード
リダイレクトURLを取るだけであればヘッダだけあれば良いのでgetではなくheadでリクエストを行い、レスポンスヘッダにLocationが入っていれば値を返す。
def get_redirect_url(url): resp = requests.head(url, allow_redirects=False) if 'Location' in resp.headers: return resp.headers['Location'] return None
status_codeが3xxであることを確認する処理も入れておいた方が行儀が良いかもしれない。
metaタグにリダイレクト設定が書かれていた場合はこの方法では取得できない。contentをパースしてmetaタグを取って解析する必要がある。
改定履歴
Author: Masato Watanabe, Date: 2019-05-10, 記事投稿