做为一个Python菜鸟,以前一直懵懂于urllib和urllib2,觉得2是1的升级版。今天看到老外写的一篇《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
你可能对于Python中两个独立存在的-urllib2和-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请求的相关模块,可是提供了不一样的功能。两个最显著的不一样以下:ide
urllib2
can accept aRequest
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字符串等。ui
urllib
provides theurlencode
method which is used for the generation of GET query strings,urllib2
doesn't have such a function. This is one of the reasons whyurllib
is often used along withurllib2
.urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为什么urllib常和urllib2一块儿使用的缘由。google
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. url
提示:若是你仅作HTTP相关的,看一下httplib2,比其余几个模块好用。spa