【发布时间】:2011-04-03 03:29:24
【问题描述】:
我正在使用urllib2.urlopen 方法打开一个 URL 并获取网页的标记。其中一些网站使用 301/302 重定向重定向我。我想知道我被重定向到的最终 URL。我怎样才能得到这个?
【问题讨论】:
我正在使用urllib2.urlopen 方法打开一个 URL 并获取网页的标记。其中一些网站使用 301/302 重定向重定向我。我想知道我被重定向到的最终 URL。我怎样才能得到这个?
【问题讨论】:
调用返回的文件对象的.geturl() 方法。根据urllib2 docs:
geturl()— 返回检索到的资源的 URL,通常用于确定是否遵循了重定向
例子:
import urllib2
response = urllib2.urlopen('http://tinyurl.com/5b2su2')
response.geturl() # 'http://stackoverflow.com/'
【讨论】:
urllib2.urlopen 的返回值有一个 geturl() 方法,它应该返回实际(即最后一个重定向)url。
【讨论】:
您可以将HttpLib2 与follow_all_redirects = True 一起使用,并从响应标头中获取content-location。示例见my answer to 'httplib is not getting all the redirect codes'。
【讨论】:
例如:
urllib2.urlopen('ORIGINAL LINK').geturl()
urllib2.urlopen(urllib2.Request('ORIGINAL LINK')).geturl()
【讨论】: