首先,urllib 和 urllib2 是python 自带的模块,因此咱们能够经过官网文档来查看它们的详细信息,这里依然给出网址,感兴趣的同窗能够看一下html
urllib模块:http://python.usyiyi.cn/python_278/library/urllib.html
python
urllib2模块:http://python.usyiyi.cn/python_278/library/urllib2.html浏览器
这里仍是简单的说一下吧,貌似python3中,urllib的库已经有了一些变化,而咱们一直以来就是使用python2.7,因此python3的改变暂不考虑python2.7
这里提一个有意思的事情,经常有人会问,新手学python是学习python2仍是python3好,毕竟两个版本之间的差异仍是挺大的,这个问题我也曾经想过,最后在<笨方法学python>里面看到了一段话,大意是这样子的,可能会有人问你或者嘲笑你为何学习python2而不去学习python3,你能够这样回答他,等到你电脑里面全部的程序都是用python3来编写的时候再和我说这件事函数
这是一个插曲,可是我为何最后选择python2呢?由于我以为虽然两个版本之间有差异,可是最基本的语法或者是一些函数是不会改变的,知道了python2的语法,剩下来的就是学习python3中的差别,并且就如今来讲,python2的资料要远多于python3学习
啊又扯远了,如今来讲说urllib 和 urllib2 这两个模块,它的做用咱们已经知道了,盗用官方文档里面的描述来解释一下url
"该模块提供了用于获取互联网数据的高层接口"code
可是我以为很纳闷了,按命名来讲urllib2应该是urllib的升级版,借用一种说法能够叫 urllib plus,urllib里面的函数urllib2应该都有而且更强大才是啊,那为何在不少时候还要用到urllib呢htm
主要的缘由有如下几点对象
1. urllib2能够接受一个Request类的实例来设置URL请求的headers,urllib仅能够接受URL。这意味着,你不能够经过urllib模块假装你的User Agent字符串等(假装浏览器)
2. urllib提供urlencode方法用来encode发送的data,而urllib2没有。这是为什么urllib常和urllib2一块儿使用的缘由
3. urllib2模块比较优点的地方是urlliburllib2.urlopen能够接受Request对象做为参数,从而能够控制HTTP Request的header部
4. urllib.urlretrieve函数以及urllib.quote等一系列quote和unquote功能没有被加入urllib2中,所以有时也须要urllib的辅助
我或许应该整理一个列表出来,看看哪些是urllib 有而 urllib2 没有的函数,可是如今没什么时间,事后再说吧