python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests


python3.X 有这些库名可用: urllib, urllib3, httplib2, requests


两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便


对于python2.X:

urllib和urllib2的主要区别:


1. urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.

2. urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode


httplib 和 httplib2

httplib 是http客户端协议的实现,通常不直接使用, urllib是以httplib为基础 

httplib2 是第三方库, 比httplib有更多特性


httplib比较底层,一般使用的话用urllib和urllib2即可


对于python3.X:

这里urllib成了一个包, 此包分成了几个模块, 


urllib.request 用于打开和读取URL, 

urllib.error 用于处理前面request引起的异常, 

urllib.parse 用于解析URL, 

urllib.robotparser用于解析robots.txt文件

python2.X 中的 urllib.urlopen()被废弃, urllib2.urlopen()相当于python3.X中的urllib.request.urlopen()


python2.X中的httplib被重命名为 http.client

使用 2to3 工具转换源码时, 会自动处理这几个库的导入


总的来说, 使用python3, 记住只有urllib, 想要更简洁好用就用requests, 但不够通用