我正在使用urllib2的HttpRedirecthandler来获取网址的重定向。代码如下所示:
import urllib2, cookielib
class HTTPRedirectHandler(urllib2.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
newreq = urllib2.HTTPRedirectHandler.redirect_request(self,
req, fp, code, msg, headers, newurl)
if newreq is not None:
self.redirections.append(newreq.get_full_url())
return newreq
def getListOfRedirectUrls(adUrl):
urlList = []
h = HTTPRedirectHandler()
h.max_redirections = 100
h.redirections = [adUrl]
opener = urllib2.build_opener(h)
response = opener.open(adUrl)
for redirect in h.redirections:
urlList.append(redirect)
return urlList
这适用于大多数网址。但是,它不时只给我和第一个网址,而不是最终页面(或其间的任何一个)。例如,广告链接:
只返回该网址,但是当我在浏览器中粘贴网址时,它会将我发送到另一个网页。如何以编程方式获取最终页面?我尝试使用urlopen
var = urllib2.urlopen(url)
print var.geturl()
但这也不会给出最终的目标网页。重定向处理程序适用于大多数URL,所以我不知道那些没有的问题是什么。有人有任何想法吗?