requests
需求:发送http/https协议的网络请求。
重点:准备请求数据,发送请求数据,获取响应数据,处理响应数据。
一、介绍
requests是python内置库。不用安装,import requests即可使用。功能强大,简单易用。
requests.get('url')即可完成http-get-request
应用:爬虫,接口测试等
二、请求
1.发送http请求
- requests.request(method="get",url="http://xxx.xxx.xx.xx:8000")
- requests.get(url="http://xxx.xxx.xx.xx:8000")
- (requests.Session()).get(url="http://xxx.xxx.xx.xx:8000")
这三种方法都能实现发送http请求。通过Session对象,发送http请求可以实现自动保持会话,身份验证通过后,请求不带headers参数也可以完成身份验证。
2.请求方法和参数
常见的请求方法:get,post,put,delet
requests.request()方法的参数:
- 必选:method,url
- 可选:params,data,json,headers,cookies,files等
说明:
- get请求带urlencoding参数可以使用dict传入params参数,进行http请求报文组装;
- post请求,数据传入data参数默认以urlencoding组装请求,数据传入json参数默认以json组装请求;
- headers参数带authorization,jsession可以进行身份验证
补充:
params,data,json三个参数的区别。params以urlencoding类型传输,data以form类型传输,json以json类型传输
三、响应
一个请求对应一个响应。requests将接收的request参数组装成请求报文,发送给服务器,requests会返回一个response对象。
1.response对象的方法
- headers:获取响应头/dict
- json():响应body-json,以dict接收响应body
- text:以text/str数据类型接收响应body
- content:二进制形式接收响应body
- status_code:获取响应code
2.其它
请求中的timeout参数:限定请求等待响应超时时间。
反爬请求限制。
响应数据提取目标数据。re,jsonpath,dict(response.json()).get()。
请求类二次封装。
四、requests/__init__.py
exceptions模块的异常类,可以更准确的进行异常处理。
1. 请求参数
请求参数分为三部分
2. 发送请求
- 调用 requesets.api 模块的 request,get,post,delete,put,options等函数发送请求。
- 实例化 requests.sessions 的 Session 类。调用 session 对象的 request,get,post等方法发送请求。
- requests.sessions 的 session 函数返回的是一个 Session() 对象。
- 发送请求,返回的是一个 Response 对象
3. 响应对象的属性和方法
- content,text/str,json/dict:获取响应body,不同的响应content type支持的获取方式不同。
- status_code:响应状态码,通常非200响应码返回的body都是无意义的。
- headers:响应头,包含content type,可以通过content type来判断收集response boy的方式。
- cookies:响应cookies,支持cookies的系统可以从cookies中获取jsession id进行身份认证。
- request:响应对应的请求。是requests最终发出的request。
- elapse:response的时间