Requests库学习

阅读更多

Requests的介绍:

最近在找代码看,在github上找到一个http的库,阅读了一部分api和源代码,此文记录下.

 

在python下,自带了urlib2的类似的库,但是作者觉得写的不好用,不够优雅,于是自己搞了个Requests出来.号称"HTTP FOR HUMAN",哈哈.


看基本的代码,的确要简洁很多.关于对比,在github上有一段有趣的讨论,可以看看.

https://gist.github.com/973705

话说,github是程序员的社区,可以多多关注.

 

文档重要内容记录:

 

文档链接:http://docs.python-requests.org/en/latest/

API:http://docs.python-requests.org/en/latest/api/

大部分看官方文档就可以了,写的很是清楚了.

例子中讲了get,post,options等操作.cookie,response的编码问题.

需要区分response.text和response.content的区别.

A session object has all the methods of the main Requests API.

Sessions can also be used to provide default data to the request methods. 

 

s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})

# both 'x-test' and 'x-test2' are sent
s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
 

Any dictionaries that you pass to a request method will be merged with the session-level values that are set. The method-level parameters override session parameters.

Requests.request方法返回的response对象中包含了创建的request.


通过stream,可以在拿到头的时候,判断是否要继续下载response的body部分.


代理的运用:


使用hook,可以在请求返回时,调用相应的function,这个跟ajax的回调类似.目前支持的钩子仅仅为response(即响应返回时)


自定义认证方式:

Any callable which is passed as the auth argument to a request method will have the opportunity to modify the request before it is dispatched.



作者关于Requests的演讲稿:http://python-for-humans.heroku.com/#1


其他知识点:

在阅读代码过程中,了解如何安装包(用pip或者easy_install命令,会直接下载安装),以及setup.py的作用.

以及__init__.py的作用是:表明此目录应该被作为一个package来处理,对于import很多package很有用.

 

源代码解读:

源代码才看完sessions.py相关的代码.后面等全部看完了,再做个总结.

 

Requests中的关于认证部分:

httpBasicAuth(基本认证):http://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81

HttpDegistAuth(摘要认证):http://zh.wikipedia.org/wiki/HTTP%E6%91%98%E8%A6%81%E8%AE%A4%E8%AF%81


两者的区别是安全性上,前者是提供明文的用户名密码信息.后者使用随机数,MD5加密以及qop等来指定加密级别.在Requests的代码中可以看到是按照该规范来进行实现的.

你可能感兴趣的:(Requests库学习)