如何使用 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 也在寻找中间重定向 URL BC,而不仅仅是最终目的地 D

以上是关于如何使用 Python 获取重定向的 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何从python中多次重定向网址中获取目标网址?

如何使 Google 地图标记重定向到 URL?

如何使开放图形链接与301重定向一起使用

如何使用 node.js 在重定向 url 中获取元素

如何使输入类型=按钮像超链接一样使用获取请求进行重定向? [复制]

在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头