requests -- http请求库封装(中级)
上篇写了requests 的基本操作,对其进行封装,为了框架更加方便的使用,这只写了 get 和 post 需要使用其他的请求方式,可以再添加
这分为两个部分 一个不需要记住cookie请求的,一个需要记住 cookie、
(一篇基础,一篇封装)
import requests import logging class RequestsHandler: """ 不需要记住cookie信息的请求类 """ def get(self, url, params=None, **kwargs): """ 发送get请求 params 传递参数就是放到URL里面传递 data 在form表单中传递参数 """ try: res = requests.get(url, params=params, **kwargs) except Exception: # 记录异常到日志 logging.info('访问get请求不成功') # raise # 手动抛出异常 else: # 操作成功运行 else return res def post(self, url, data=None, json=None, **kwargs): """ 发送post请求 """ try: res = requests.post(url, data=data, json=json, **kwargs) except Exception: # 记录异常到日志 logging.info('访问post请求不成功') else: # 操作成功运行 else return res def visit(self, method, url, params=None, data=None, json=None, **kwargs): """ 访问 get 和 post 接口 :param method:请求方法 :param url:URL地址 :param params:参数放到URL里面传递, :param data:在form表单中传递参数 :param json:json 格式 """ # lower 转换成小写 if method.lower() == 'get': return self.get(url, params=params, **kwargs) elif method.lower() == 'post': return self.post(url, params=params, data=data, json=json, **kwargs) else: # 其他请求 # requests 通用的访问方式 其他的也是使用的 request 进行的具体封装 return requests.request(method, url, params=params, data=data, json=json, **kwargs) def json(self, method, url, params=None, data=None, json=None, **kwargs): """ 访问接口, 获取json数据 """ res = self.visit(method, url, params=params, data=data, json=json, **kwargs) # 获取json 数据 try: return res.json() except: logging.info('获取json 数据失败,不是json格式的数据') class RequestsCookieHandler: """ 记住coolie信息的请求类 """ def __init__(self): # Session 管理 cookie 作用是动态管理cookie self.session = requests.Session() def get(self, url, params=None, **kwargs): """ 发送get请求 params 传递参数就是放到URL里面传递 data 在form表单中传递参数 """ try: res = self.session.get(url, params=params, **kwargs) except Exception: # 记录异常到日志 logging.info('coolie请求类,访问get请求不成功') # raise # 手动抛出异常 else: # 操作成功运行 else return res def post(self, url, data=None, json=None, **kwargs): """ 发送post请求 """ try: res = self.session.post(url, data=data, json=json, **kwargs) except Exception: # 记录异常到日志 logging.info('coolie请求类,访问post请求不成功') else: # 操作成功运行 else return res def visit(self, method, url, params=None, data=None, json=None, **kwargs): """ 访问 get 和 post 接口 :param method:请求方法 :param url:URL地址 :param params:参数放到URL里面传递, :param data:在form表单中传递参数 :param json:json 格式 """ # lower 转换成小写 if method.lower() == 'get': return self.get(url, params=params, **kwargs) elif method.lower() == 'post': return self.post(url, params=params, data=data, json=json, **kwargs) else: # 其他请求 # requests 通用的访问方式 return self.session.request(method, url, params=None, data=None, json=None, **kwargs) def json(self, method, url, params=None, data=None, json=None, **kwargs): """ 访问接口, 获取json数据 """ res = self.visit(method, url, params=params, data=data, json=json, **kwargs) # 获取json 数据 try: return res.json() except: logging.info('coolie请求类,获取json 数据失败,不是json格式的数据')