您的位置:首页 > 编程语言 > Python开发

python-35:urllib 和 urllib2 模块

2015-12-01 00:00 435 查看
首先,urllib 和 urllib2 是python 自带的模块,所以我们可以通过官网文档来查看它们的详细信息,这里依然给出网址,感兴趣的同学可以看一下

urllib模块:http://python.usyiyi.cn/python_278/library/urllib.html

urllib2模块:http://python.usyiyi.cn/python_278/library/urllib2.html

这里还是简单的说一下吧,貌似python3中,urllib的库已经有了一些变化,而我们一直以来就是使用python2.7,所以python3的改变暂不考虑

这里提一个有意思的事情,常常有人会问,新手学python是学习python2还是python3好,毕竟两个版本之间的差别还是挺大的,这个问题我也曾经想过,最后在<笨方法学python>里面看到了一段话,大意是这样子的,可能会有人问你或者嘲笑你为什么学习python2而不去学习python3,你可以这样回答他,等到你电脑里面所有的程序都是用python3来编写的时候再和我说这件事

这是一个插曲,但是我为什么最后选择python2呢?因为我觉得虽然两个版本之间有差别,但是最基本的语法或者是一些函数是不会改变的,知道了python2的语法,剩下来的就是学习python3中的差异,而且就现在来说,python2的资料要远多于python3

啊又扯远了,现在来说说urllib 和 urllib2 这两个模块,它的作用我们已经知道了,盗用官方文档里面的描述来解释一下

"该模块提供了用于获取互联网数据的高层接口"

但是我觉得很纳闷了,按命名来说urllib2应该是urllib的升级版,借用一种说法可以叫 urllib plus,urllib里面的函数urllib2应该都有并且更强大才是啊,那为什么在很多时候还要用到urllib呢

主要的原因有以下几点

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 没有的函数,但是现在没什么时间,过后再说吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫