【问题标题】:How to get the URL of a redirect with Python如何使用 Python 获取重定向的 URL
【发布时间】: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)

标签: python redirect urllib2


【解决方案1】:

您只需询问当前网址即可轻松获得 D。

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

要处理中间重定向,您可能需要build your own opener,使用记录重定向的HTTPRedirectHandler

【讨论】:

【解决方案2】:

可能最好的方法是继承urllib2.HTTPRedirectHandler。深入了解 Python 的 chapter on redirects 可能会有所帮助。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这就是我一直在寻找的答案!然而,这真的是一个完整的解决方案吗? OP 也在寻找中间重定向 URL BC,而不仅仅是最终目的地 D
    猜你喜欢
    • 2019-06-21
    • 2021-07-16
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    相关资源
    最近更新 更多