如何用Python获取重定向的URL
在Python中,我使用urllib2来打开一个网址。这个网址会重定向到另一个网址,而那个网址又会重定向到第三个网址。
我想在每次重定向后打印出新的网址。
举个例子:
-> 表示重定向到
A -> B -> C -> D
我想打印出B、C和D的网址(A是已知的,因为它是起始网址)。
3 个回答
4
对于Python 3,使用urllib
的方法要简单得多:
import urllib
def resolve(url):
return urllib.request.urlopen(url).geturl()
48
你可以通过简单地请求当前的URL来轻松获取D。
req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()
为了处理中间的重定向,你可能需要自己创建一个打开器,使用HTTPRedirectHandler来记录这些重定向。
10
最好的办法可能是创建一个新的类,继承自 urllib2.HTTPRedirectHandler
。你可以看看《Dive Into Python》这本书中关于重定向的章节,可能会对你有帮助。