python编写网络应用时,经常需要用到python urllib模块和urllib2模块。
urllib和urllib2之间有什么区别?应该选择使用urllib还是python urllib2模块?
在之前的文章中,我们曾通过实例介绍了python中urllib2模块与urllib模块的区别,以及Python标准库urllib2的用法, 另外还剖析了Python 标准库urllib2用法的细节,感兴趣的朋友可以参考下。
本节提到的urllib和urllib2之间的区别,源自老外的一篇文章:
《Python: difference between urllib and urllib2 http://www.hacksparrow.com/python-difference-between-urllib-and-urllib2.html》
解释如下:
You might be intrigued by the existence of two separate URL modules in Python -urllib and urllib2. Even more intriguing: they are not alternatives for each other. So what is the difference between urllib and urllib2, and do we need them both?
你可能对于Python中两个独立存在的 urllib 和 urllib2 感到好奇。
更有趣的是:它们并不是可以相互代替的。那么这两个模块间的区别是什么,并且这两个我们都需要吗?
urllib and urllib2are both Python modules that do URL request related stuff but offer different functionalities. Their two most significant differences are listed below:
urllib 和 urllib2 都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:
urllib2 can accept a Request object to set the headers for a URL request,urllib accepts only a URL. That means, you cannot masquerade your User Agent string etc. urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。
urllib provides the urlencode method which is used for the generation of GET query strings, urllib2 doesn't have such a function. This is one of the reasons why urllib is often used along with urllib2. urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。
For other differences between urllib and urllib2 refer to their documentations, the links are given in the References section.
Tip: if you are planning to do HTTP stuff only, check out httplib2, it is much better than httplib or urllib or urllib2.
提示:如果仅做HTTP相关的,看一下httplib2,比其他几个模块好用。