在Python中确定重定向的URL

时间:2011-04-04 12:14:47

标签: python parsing redirect

我使用HTMLparser创建了一个小解析器,我想知道链接重定向的位置。我不知道如何解释这个,所以请看这个例子:

在我的网页上,我在源代码上有一个链接:http://www.myweb.com?out=147,重定向到http://www.mylink.com。我可以毫无问题地解析http://www.myweb.com?out=147,但我不知道如何获得http://www.mylink.com

2 个答案:

答案 0 :(得分:11)

您可以使用urllib2(Python 3中的urllib.request)及其HTTPRedirectHandler来查找网址重定向的位置。这是一个功能:

import urllib2

def get_redirected_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    request = opener.open(url)
    return request.url

print get_redirected_url("http://google.com/")
# prints "http://www.google.com/"

答案 1 :(得分:3)

您无法通过解析HTML源代码来获取重定向URL。 重定向由服务器触发,而不是由客户端触发。您需要对相关URL执行HTTP请求并检查服务器的HTTP响应 - 特别是HTTP状态代码304(重定向)和新URL。