如何使用 Python 获取重定向的 URL
Posted
技术标签:
【中文标题】如何使用 Python 获取重定向的 URL【英文标题】:How to get the URL of a redirect with Python 【发布时间】:2011-06-21 14:41:15 【问题描述】:在 Python 中,我使用 urllib2 打开一个 url。此 url 重定向到另一个 url,该 url 重定向到另一个 url。
我希望在每次重定向后打印出 url。
例如
-> = 重定向到
A -> B -> C -> D
我想打印 B、C 和 D 的 URL(A 是已知的,因为它是起始 URL)。
【问题讨论】:
为什么不使用请求模块,actualURL = requests.head(passedurl, timeout=100.0 , headers='Accept-Encoding': 'identity').headers.get('location', passedurl)
?
【参考方案1】:
您只需询问当前网址即可轻松获得 D。
req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()
要处理中间重定向,您可能需要build your own opener,使用记录重定向的HTTPRedirectHandler。
【讨论】:
它解决了“我到达的网址是什么”这个更常见的问题? 这里是使用requests
的类似答案:***.com/a/20475712/309483【参考方案2】:
可能最好的方法是继承urllib2.HTTPRedirectHandler
。深入了解 Python 的 chapter on redirects 可能会有所帮助。
【讨论】:
【参考方案3】:对于 Python 3,urllib
的解决方案要简单得多:
import urllib
def resolve(url):
return urllib.request.urlopen(url).geturl()
【讨论】:
这就是我一直在寻找的答案!然而,这真的是一个完整的解决方案吗? OP 也在寻找中间重定向 URLB
和 C
,而不仅仅是最终目的地 D
。以上是关于如何使用 Python 获取重定向的 URL的主要内容,如果未能解决你的问题,请参考以下文章