技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 查看专题: 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 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1