python第三方库之Requests模块(一)
最近在接触python实现接口自动化测试,然后也在接触网络爬虫,因为这两个工作,所以接触requests模块比较多,想要慢慢的做一下总结,不断的来提升自己。
requests模块是一个用于访问网络的python的第三方库,python中类似的库有很多,但是requests的API使用更加友好。
一 requests模块优点
1.因为是基于urllib2实现的第三方库 ,所以它包含了urllib2的所有特性
2.支持HTTP持久连接和HTTP Client连接池
3.支持使用session保持一次用户会话(从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开连接),session会保持这一次会话中的cookie是一致的
4.支持上传文件
5.支持自动确定响应内容的编码
6.支持国际化的URL和POST数据自动编码
7.支持https的SSL证书请求校验,也可以跳过校验
二 Reuqest模块的使用
我以前一直觉得,学习一个新的东西,你必须把它学透了你才能去用它用的合适。事实也是如此,单有些知识是需要我们在使用的过程中去掌握和理解的。另外,学习语言使用语言,需要培养除一种合适自己的学习能力。
1.发送请求
Requests发送网络请求非常简单,我们直接调用提供的方法即可,直接看一下可调用的请求方法源码,可以明确的知道HTTP对应的请求方法的在使用requests模块时怎么调用。
全部http请求方法以上是全部请求方法的函数名+参数截图,我们一起来看一下get方法的源码,也很好理解。
get方法源码实例再来看一个发送请求的实例
发送请求的实例没错,发送请求就是这么简单,requests模块不愧是非转基因,适应人类的第三方库。
2.传递请求参数
请求参数分类:URL参数、请求主体参数(form-data类型、json类型、file类型等等)
- URL参数(Query String Parameters参数)传递
注:一般用于GET请求,以URL string的形式传递
URL参数传递方式看一下请求发送的url,可以看到URL已经被正确编码
URL参数传递实例- 请求体参数(Requests Body)
注:一般用于POST请求,可以使用Content-Type来指定不同参数类型
比较常见的参数类型:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml
requsets.post(url)方法提供传参Requests Body中对应的数据类型,看一下源码
data:字典类型,可以传递请求主体参数中:form表单类型、字节类型、文件对象的数据
json:json数据,传递请求主体参数为json数据格式的数据
**kwargs:可选关键字参数,可以传递url参数,通过params={}
data传参
3.响应内容
我们在发起网络请求时,要关注的除了请求url、请求方式、请求参数以外,最重要的还有响应内容,比如说响应状态码、响应主体内容等,requests模块的响应内容,我们直接看一下结果树: