2010年11月 的存档

概述 urllib2中的核心类: Request :一个具体的url请求,包含了请求的所有信息,不仅仅试用于http协议 OpenerDirector:与BaseHandler组合,通过组合不同得handler处理不同的请求 BaseHandler :参与完成请求处理的类,不同的请求处理都继承这个类 在urllib2中,一次请求被分为三个过程,分别是request,open,response request:目的在于构造本次请求Request对象所需得所有信息,如http协议中的header信息 open:处理具体请求的过程,封装Request对象,调用更底层的类完成请求并返回response response:对返回的Response对象做处理 当然后有一个error处理的过程,但这个不是主动触发的。 OpenerDirector 因为每次请求的具体实现是不同的handler,而且一次请求可能由很多handler组成。所以实现这一耦合机制的类就是OpenerDirector,这个类可以注册(添加)各种不同的handler用来帮助处理一次请求。通常来说handler中的命名规则为 protocol_request|open|response,这分别对应不同协议的三个过程。还是直接上代码,写了一点中文的注释。 class OpenerDirector: def __init__(self): # manage the individual handlers # 所有已注册的handler self.handlers = [] # 已注册的不同过程的方法 self.handle_open = {} self.handle_error = {} self.process_response = {} self.process_request = {} # 添加一个handler # def add_handler(self, handler): # 通过检测BaseHandler中的方法 确保handler继承于BaseHandler if not hasattr(handler, […]

2010年11月20日16:59 | 6 条评论
分类: 兴趣所在
标签: