python:如何判断链接是否重定向到另一个?

时间:2014-12-15 23:45:39

标签: python python-requests

我有一个网址列表,但其中许多已过时,会重定向到其主页或其域中的其他网页。我想从列表中过滤掉这些网址。使用requests,如何过滤掉未在其预定位置打开的网址?

2 个答案:

答案 0 :(得分:5)

您应该查看response history注意:并非所有网站都使用重定向来向您显示其他网页。

>>> r = requests.head('http://github.com', allow_redirects=True)
>>> r.url
'https://github.com/'
>>> r.history
[<Response [301]>]

您还可以阻止重定向并检查回复status_code是否显示,请参阅this example

>>> r = requests.get('http://github.com', allow_redirects=False)
>>> r.status_code
301
>>> r.history
[]

答案 1 :(得分:0)

这是我在项目中使用的方法:http://www.elfinite.com/

def get_last_redirected_url(self, url):
    """
    """
    try:
        response = requests.get(url)
        if response.history:
            # Request was redirected
            return response.url
        else:
            # Request was not redirected"
            return url
    except Exception as e:
        return False
        pass