首页 > 技术文章 > python-requests

bonus_scene 2020-09-08 00:50 原文

requests

需求:发送http/https协议的网络请求。

重点:准备请求数据,发送请求数据,获取响应数据,处理响应数据。

一、介绍

  requests是python内置库。不用安装,import requests即可使用。功能强大,简单易用。

  requests.get('url')即可完成http-get-request

  应用:爬虫,接口测试等

二、请求

1.发送http请求

  1. requests.request(method="get",url="http://xxx.xxx.xx.xx:8000")
  2. requests.get(url="http://xxx.xxx.xx.xx:8000")
  3. (requests.Session()).get(url="http://xxx.xxx.xx.xx:8000")

  这三种方法都能实现发送http请求。通过Session对象,发送http请求可以实现自动保持会话,身份验证通过后,请求不带headers参数也可以完成身份验证。

2.请求方法和参数

  常见的请求方法:get,post,put,delet

  requests.request()方法的参数:

    1. 必选:method,url
    2. 可选:params,data,json,headers,cookies,files等

  说明:

    1. get请求带urlencoding参数可以使用dict传入params参数,进行http请求报文组装;
    2. post请求,数据传入data参数默认以urlencoding组装请求,数据传入json参数默认以json组装请求;
    3. headers参数带authorization,jsession可以进行身份验证

  补充:

    params,data,json三个参数的区别。params以urlencoding类型传输,data以form类型传输,json以json类型传输

三、响应

  一个请求对应一个响应。requests将接收的request参数组装成请求报文,发送给服务器,requests会返回一个response对象。

1.response对象的方法

  1. headers:获取响应头/dict
  2. json():响应body-json,以dict接收响应body
  3. text:以text/str数据类型接收响应body
  4. content:二进制形式接收响应body
  5. status_code:获取响应code

2.其它

  请求中的timeout参数:限定请求等待响应超时时间。

  反爬请求限制。

  响应数据提取目标数据。re,jsonpath,dict(response.json()).get()。

  请求类二次封装。

四、requests/__init__.py

exceptions模块的异常类,可以更准确的进行异常处理。

1. 请求参数

请求参数分为三部分

2. 发送请求

  1. 调用 requesets.api 模块的 request,get,post,delete,put,options等函数发送请求。
  2. 实例化 requests.sessions 的 Session 类。调用 session 对象的 request,get,post等方法发送请求。
  3. requests.sessions 的 session 函数返回的是一个 Session() 对象。
  4. 发送请求,返回的是一个 Response 对象

3. 响应对象的属性和方法

 

 

  1. content,text/str,json/dict:获取响应body,不同的响应content type支持的获取方式不同。
  2. status_code:响应状态码,通常非200响应码返回的body都是无意义的。
  3. headers:响应头,包含content type,可以通过content type来判断收集response boy的方式。
  4. cookies:响应cookies,支持cookies的系统可以从cookies中获取jsession id进行身份认证。
  5. request:响应对应的请求。是requests最终发出的request。
  6. elapse:response的时间

 

推荐阅读