Pythonでは、urllib2を使用してURLを開きます。このURLは別のURLにリダイレクトされ、さらに別のURLにリダイレクトされます。
各リダイレクトの後にURLを出力したいと思います。
例えば
-> =リダイレクト
A-> B-> C-> D
B、C、DのURLを印刷したい(Aは開始URLであるため、すでにわかっている)。
おそらく最良の方法は、urllib2.HTTPRedirectHandler
をサブクラス化することです。 Dive Into Pythonの リダイレクトの章 が役立つ場合があります。
現在のURLを要求するだけで簡単にDを取得できます。
req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()
中間リダイレクトを処理するには、リダイレクトを記録する HTTPRedirectHandler を使用して、おそらく 独自のオープナーを作成する が必要になります。
Python 3の場合、 urllib
を使用したソリューションははるかに簡単です:
import urllib
def resolve(url):
return urllib.request.urlopen(url).geturl()