# 封裝get和post
import logging
import requests
class RequestsCookieHandler:
def __init__(self):
self.session = requests.Session()#用一個session去接收
def get(self, url, params, **kw): # **kwargs是不定長參數,headers是放在這個不定長參數裏
# '''封裝一個get方法,發送get請求'''
try: # 當處理不成功時,比如URL地址輸入方式錯誤,或者接口超時timeout,需要拋出一個異常
res = self.session.get(url, params=params, **kw)
except TimeoutError:
# 記錄日誌信息,放入logger裏邊,這樣我們就能知道問題出在哪裏
logging.error('訪問不成功')
else:
return res
def post(self, url, data=None, json=None, **kw):
# '''封裝一個post方法,發送post請求'''
try: # 當處理不成功時,比如URL地址輸入方式錯誤,或者接口超時timeout,需要拋出一個異常
res = self.session.get(url, data=data, json=json, **kw) # 其中data是form表單形式的
except TimeoutError:
# 記錄日誌信息,放入logger裏邊,這樣我們就能知道問題出在哪裏
logging.error('訪問不成功')
else:
return res
# vist方法是整合接口請求的方法
def vist(self, method, url, params=None, data=None, json=None, **kw):
'''訪問接口'''
'GET,如果傳輸進來的是大寫的GET。可以使用lower方法'
if method.lower == 'get':
return self.get(url, params=params, **kw)
elif method.lower == 'post':
return self.post(url, data=data, json=json, params=params, **kw)
# 如果接口中還有其他的請求方式比如put,option之類色,可以用下方的方法,實際工作中常用的是get和post
else:
return self.session.request(method, url, **kw)
def json(self, method, url, params=None, data=None, json=None, **kw): # json是要再vist方法下去進行進一步的處理
'''訪問接口,獲取json數據'''
res = self.vist(url, method, params=params, data=data, json=json, **kw)
# 獲取json數據
try:
return res.json()
except:
# 記錄日誌信息
logging.error('不是json格式的數據')
總結tips:
1、需要一個初始化的方法init,用 session來接收cookie,session是requests庫的一個管理器
2、將上一篇文章中的requests替換成self.session就可以啦