作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版。今天看到老外写的一篇《Python: difference between urllib and urllib2》才明白其中的区别
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"_blank" href="http://docs.python.org/library/urllib2.html#urllib2.Request" rel="external nofollow" >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字符串等。
"_blank" href="http://docs.python.org/library/urllib.html#urllib.urlencode" rel="external nofollow" >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,比其他几个模块好用。
相关资料
这里还有个类似的问答:urllib urllib2 what is the difference "_blank" href="http://stackoverflow.com/questions/2018026/should-i-use-urllib-or-urllib2" rel="external nofollow" >Should I use urllib or urllib2"http://docs.python.org/library/urllib.html" rel="external nofollow" >urllib