Python的urllib与httplib?

什么时候会有人使用httplib,何时使用urllib?

有什么区别?

我想我准备urllib使用httplib,我打算做一个应用程序,将需要作出http请求,到目前为止,我只使用httplib.HTTPConnection python的请求,并阅读关于urllib我看我也可以使用它的请求,那么这个或那个的好处是什么?

urllib(特别是urllib2)默认处理很多事情,或者有适当的库来做。 例如,urllib2将自动遵循redirect,您可以使用cookiejar来处理login脚本。 如果你使用的是httplib,这些都是你自己编码的东西。

我想说一说关于urlliburllib2httplibhttplib2

urllib*httplib*的主要区别在于:

httplib和httplib2直接处理HTTP / HTTP请求和响应,给你更多的空间来完成自己的工作。

urllib和urllib2build立在httplib之上,它们更加抽象和强大,但是有时候不能满足你对HTTP相关操作的指定需求。

而对于httplibhttplib2 ,我会说他们都是HTTP client library 。 然而, httplib2function比httplibfunction强大得多。

至于urlliburllib2 ,从这个链接引用:

urllib和urllib2都是与URL请求相关的东西,但提供不同的function的Python模块。 他们的两个最重要的差异如下:

  • urllib2可以接受一个Request对象来为一个URL请求设置标题,urllib只接受一个URL。 这意味着,你不能伪装你的用户代理string等
  • urllib提供了用于生成GET查询string的urlencode方法,urllib2没有这样的函数。 这是为什么urllib经常与urllib2一起使用的原因之一。

我会推荐我的个人博客Httplib Httplib2 Urllib Urllib2-有什么不同 。

希望能帮助到你:-)

urllib / urllib2构build在httplib之上。 它提供了比直接写入httplib更多的function。

但是,httplib可以更好地控制底层连接。

如果您只处理http / https并需要访问HTTP特定的东西,请使用httplib。

对于所有其他情况,请使用urllib2。

如果您需要caching,保持活动,压缩或身份validation等高级别的function,请尝试httplib2

对于那些将事物移动到Py3(由于某些原因,不能或不重构使用真棒请求模块),这是一个很好的过渡之间的版本:

 try: import http.client as httplib except ImportError: import httplib 

适用于两个Python版本集。