一开始我以为
urllib2
模块单纯是urllib
模块的升级版,因为我看到它们都有urlopen
方法,但是经过查找资料,发现两者差别还是很大的。
以下是根据网上资料的总结:
urllib2
可以接受一个Request
类的实例来设置URL请求的 headers,urllib
仅可以接受 URL。这意味着,你不可以通过urllib模块伪装你的User Agent字符串等(伪装浏览器)。urllib
提供urlencode
方法用来GET查询字符串的产生,而urllib2
没有。这是为何urllib常和urllib2一起使用的原因。rllib2
模块比较优势的地方是urllib2.urlopen
可以接受Request对象作为参数,从而可以控制HTTP Request的header部。但是
urllib.urlretrieve
函数以及urllib.quote
等一系列quote和unquote功能没有被加入urllib2
中,因此有时也需要urllib
的辅助。