如何用Python获取重定向的URL

35 投票
3 回答
42931 浏览
提问于 2025-04-16 11:15

在Python中,我使用urllib2来打开一个网址。这个网址会重定向到另一个网址,而那个网址又会重定向到第三个网址。

我想在每次重定向后打印出新的网址。

举个例子:

-> 表示重定向到

A -> B -> C -> D

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

3 个回答

4

对于Python 3,使用urllib的方法要简单得多:

import urllib


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

你可以通过简单地请求当前的URL来轻松获取D。

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

为了处理中间的重定向,你可能需要自己创建一个打开器,使用HTTPRedirectHandler来记录这些重定向。

10

最好的办法可能是创建一个新的类,继承自 urllib2.HTTPRedirectHandler。你可以看看《Dive Into Python》这本书中关于重定向的章节,可能会对你有帮助。

撰写回答