您现在的位置:首页 --> 查看专题: urllib2
OpenerDirector是怎么把这些handler分类的?
上篇文章说到,在build_opener中只是调用了OpenerDirector的add_handler方法,并不是直接操作的属性来完成handler的添加的。那么来看看OpenerDirector.add_handler具体做了些什么工作。
这个函数的作用其实很简单,就是传进来的Handler进行分类。既然是分类那就要有分类的依据了,那么分类的依据是什么呢?
在程序第一次执行urlopen操作的时候,其实就是构建了一个全局的_opener对象,然后用这个_opener对象来处理url以及data。这样做的好处就是如果你在程序中要多次调用urlopen,就不会频繁构建opener对象了。当然这个opener也不是一次加载就再也不可变了,urllib2提供了install_opener这个方法,你可以在客户端调用build_opener然后用前面的那个install_opener来加载。
开始有读urllib2源码的这个想法是在某个午饭后的时光,刷了会微博发现:与其无聊的刷微博,不如找点源码读,想了想,就找到urllib2。
原因是urllib2这个模块是从一开始写python到很久以后都会用到的东西,我想大多数人都会有这样的感觉,因为它很好用,而且python也会经常用来写爬虫。使用频率这么高的东西,自然要把它彻底掌握才好。
这段时间有空就会看看urllib2的源码,里面可以学习的东西还真不少,也有些值的借鉴的思想,比如关于一系列handler处理的操作。另外里面还用了个设计模式,应该是command模式。这些东西以后慢慢分析。
[ 共3篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] 图书馆的世界纪录
- [54] Oracle MTS模式下 进程地址与会话信
- [53] android 开发入门
- [52] 如何拿下简短的域名
- [50] 【社会化设计】自我(self)部分――欢迎区
- [50] Go Reflect 性能
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑
赞助商广告