python urllib2处理重定向的问题


需求:因为urllib2自动处理了重定向,如果取到某一步重定向的Location字段?


重定义urllib2.HTTPRedirectHandler,把重定向过程中的Location都取出来,就OK,如下代码:


class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
    RedURLs301 = []
    RedURLs302 = []
    
    def Getredurl301(self):
        return SmartRedirectHandler.RedURLs301
    
    def Getredurl302(self):
        return SmartRedirectHandler.RedURLs302
    
    def http_error_301(self, req, fp, code, msg, headers):
        if headers.has_key("Location"):
            SmartRedirectHandler.RedURLs301.append(headers["Location"])
        result = urllib2.HTTPRedirectHandler.http_error_301(
            self, req, fp, code, msg, headers)
        return result                                       

    def http_error_302(self, req, fp, code, msg, headers):
        if headers.has_key("Location"):
            SmartRedirectHandler.RedURLs302.append(headers["Location"])
        result = urllib2.HTTPRedirectHandler.http_error_302(
            self, req, fp, code, msg, headers)                                      
        return result 


opener = urllib2.build_opener(SmartRedirectHandler)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值