如何使用Python获取重定向的URL

如何使用Python获取重定向的URL,python,redirect,urllib2,Python,Redirect,Urllib2,在Python中,我使用urllib2打开url。此url重定向到另一个url,从而重定向到另一个url 我希望在每次重定向后打印出url 比如说 ->=重定向到 A->B->C->D 我想打印B、C和D的URL(A是已知的,因为它是起始URL)。您只需询问当前URL即可轻松获得D req = urllib2.Request(starturl, datagen, headers) res = urllib2.urlopen(req) finalurl = res.geturl() 要处理中间重

在Python中,我使用urllib2打开url。此url重定向到另一个url,从而重定向到另一个url

我希望在每次重定向后打印出url

比如说

->=重定向到

A->B->C->D


我想打印B、C和D的URL(A是已知的,因为它是起始URL)。

您只需询问当前URL即可轻松获得D

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

要处理中间重定向,您可能需要使用它来记录重定向。

最好的方法可能是子类化
urlib2.HTTPRedirectHandler
。深入了解Python可能会有所帮助。

对于Python 3,使用的解决方案要简单得多:

导入urllib
def解析(url):
返回urllib.request.urlopen(url.geturl())

为什么不使用requests模块,
actualURL=requests.head(passedurl,timeout=100.0,headers={'Accept-Encoding':'identity')).headers.get('location',passedurl)
?它解决了一个更常见的问题“我到达的url是什么”?下面是一个使用
请求的类似答案:这就是我一直在寻找的答案!然而,这真的是一个完整的解决方案吗?OP也在寻找中间重定向URL
B
C
,而不仅仅是最终目的地
D