如何使用 Python 获取重定向的 URL

问题描述 投票:0回答:4

在 Python 中,我使用 urllib2 打开一个 url。此 url 重定向到另一个 url,该 url 重定向到另一个 url。

我希望在每次重定向后打印出 url。

例如

-> = 重定向到

A -> B -> C -> D

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

python redirect urllib2
4个回答
48
投票

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

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

要处理中间重定向,您可能需要构建自己的开启器,使用记录重定向的HTTPRedirectHandler


10
投票

最好的方法可能是继承

urllib2.HTTPRedirectHandler
。深入了解 Python 的重定向章节 可能会有帮助。


4
投票

对于 Python 3,使用

urllib
的解决方案要简单得多:

import urllib


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

0
投票

这个GitHub Repository提供Python、JavaScript和PHP代码来获取另一个URL重定向到的URL。

Python代码:

import requests
import urllib.parse

def get_final_url(url):
    response = requests.get(url)
    redirects = [url]
    for resp in response.history:
        redirects.append(resp.headers['Location'])

    return (response.url, redirects)


initial_url = 'https://www.example.com/redirect';
url_final, all_redirects = get_final_url(initial_url);

print("Final URL: " + url_final)
print("All redirects: " + " -> ".join(all_redirects))

链接到JavaScript代码PHP代码来实现这个。

© www.soinside.com 2019 - 2024. All rights reserved.