web-dev-qa-db-ja.com

Pythonを使用してリダイレクトのURLを取得する方法

Pythonでは、urllib2を使用してURLを開きます。このURLは別のURLにリダイレクトされ、さらに別のURLにリダイレクトされます。

各リダイレクトの後にURLを出力したいと思います。

例えば

-> =リダイレクト

A-> B-> C-> D

B、C、DのURLを印刷したい(Aは開始URLであるため、すでにわかっている)。

31
Matthew H

おそらく最良の方法は、urllib2.HTTPRedirectHandlerをサブクラス化することです。 Dive Into Pythonの リダイレクトの章 が役立つ場合があります。

9
Wooble

現在のURLを要求するだけで簡単にDを取得できます。

req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()

中間リダイレクトを処理するには、リダイレクトを記録する HTTPRedirectHandler を使用して、おそらく 独自のオープナーを作成する が必要になります。

45
chmullig

Python 3の場合、 urllib を使用したソリューションははるかに簡単です:

import urllib


def resolve(url):
    return urllib.request.urlopen(url).geturl()
0
jadelord