requests
1、requests介绍及简单使用
(1)Requests介绍
流行的接口http(s)请求工具
使用功能强大、简单方便、容易上手
(2)Requests简单使用
安装Requests包
$ pip3 install requests
简单使用
import requests requests.get("http://www.baidu.com")
Requests请求返回介绍
r.status_code #响应状态
r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
r.headers #以字典对象存储服务器响应头,若键不存在则返回None
r.json() #Requests中内置的JSON
r.url # 获取url r.encoding # 编码格式
r.cookies # 获取cookie
r.raw #返回原始响应体
r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行
r.raise_for_status() #失败请求(非200响应)抛出异常
2、Requests方法封装
封装requests get方法
#1、创建封装get方法 def requests_get(url,headers): #2、发送requests get请求 r = requests.get(url,headers = headers) #3、获取结果相应内容 code = r.status_code try: body = r.json() except Exception as e: body = r.text #4、内容存到字典 res = dict() res["code"] = code res["body"] = body #5、字典返回 return res
封闭requests post方法
#post方法封装 #1、创建post方法 def requests_post(url,json=None,headers=None): #2、发送post请求 r= requests.post(url,json=json,headers=headers) #3、获取结果内容 code = r.status_code try: body = r.json() except Exception as e: body = r.text #4、内容存到字典 res = dict() res["code"] = code res["body"] = body #5、字典返回 return res
封装requests公共方法
- 增加cookies,headers参数
- 根据参数method判断get/post请求
def requests_api(self,url,data = None,json=None,headers=None,cookies=None,method="get"): if method =="get": #get请求 self.log.debug("发送get请求") r = requests.get(url, data = data, json=json, headers=headers,cookies=cookies) elif method == "post": #post请求 self.log.debug("发送post请求") r = requests.post(url,data = data, json=json, headers=headers,cookies=cookies) #2. 重复的内容,复制进来 #获取结果内容 code = r.status_code try: body = r.json() except Exception as e: body = r.text #内容存到字典 res = dict() res["code"] = code res["body"] = body #字典返回 return res
重构get方法
- 调用公共方法request_api,
- 参数:固定参数:url,method
- 其它参数: **args
#1、定义方法 def get(self,url,**kwargs): #2、定义参数 #url,json,headers,cookies,method #3、调用公共方法 return self.requests_api(url,method="get",**kwargs)
重构post方法
- 调用公共方法request_api,
- 参数:固定参数:url,method
- 其它参数: **args
def post(self,url,**kwargs): #2、定义参数 #url,json,headers,cookies,method #3、调用公共方法 return self.requests_api(url,method="post",**kwargs)