【问题标题】:How can I get the final redirect URL when using urllib2.urlopen?使用 urllib2.urlopen 时如何获取最终重定向 URL?
【发布时间】:2011-04-03 03:29:24
【问题描述】:

我正在使用urllib2.urlopen 方法打开一个 URL 并获取网页的标记。其中一些网站使用 301/302 重定向重定向我。我想知道我被重定向到的最终 URL。我怎样才能得到这个?

【问题讨论】:

    标签: python urllib2


    【解决方案1】:

    调用返回的文件对象的.geturl() 方法。根据urllib2 docs

    geturl() — 返回检索到的资源的 URL,通常用于确定是否遵循了重定向

    例子:

    import urllib2
    response = urllib2.urlopen('http://tinyurl.com/5b2su2')
    response.geturl() # 'http://stackoverflow.com/'

    【讨论】:

    • 当有多个中间网址并且我想要最终网址时如何处理?这不适用于这种情况。
    【解决方案2】:

    urllib2.urlopen 的返回值有一个 geturl() 方法,它应该返回实际(即最后一个重定向)url。

    【讨论】:

      【解决方案3】:

      您可以将HttpLib2follow_all_redirects = True 一起使用,并从响应标头中获取content-location。示例见my answer to 'httplib is not getting all the redirect codes'

      【讨论】:

        【解决方案4】:

        例如: urllib2.urlopen('ORIGINAL LINK').geturl()

        urllib2.urlopen(urllib2.Request('ORIGINAL LINK')).geturl()

        【讨论】:

          猜你喜欢
          • 2019-03-11
          • 2011-01-23
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-08
          相关资源
          最近更新 更多