Python的urllib与httplib?
什么时候会有人使用httplib,何时使用urllib?
有什么区别?
我想我准备urllib使用httplib,我打算做一个应用程序,将需要作出http请求,到目前为止,我只使用httplib.HTTPConnection python的请求,并阅读关于urllib我看我也可以使用它的请求,那么这个或那个的好处是什么?
urllib(特别是urllib2)默认处理很多事情,或者有适当的库来做。 例如,urllib2将自动遵循redirect,您可以使用cookiejar来处理login脚本。 如果你使用的是httplib,这些都是你自己编码的东西。
我想说一说关于urllib
, urllib2
, httplib
和httplib2
。
urllib*
和httplib*
的主要区别在于:
httplib和httplib2直接处理HTTP / HTTP请求和响应,给你更多的空间来完成自己的工作。
urllib和urllib2build立在httplib之上,它们更加抽象和强大,但是有时候不能满足你对HTTP相关操作的指定需求。
而对于httplib
和httplib2
,我会说他们都是HTTP client library
。 然而, httplib2
function比httplib
function强大得多。
至于urllib
和urllib2
,从这个链接引用:
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版本集。