封装get、post请求如下:
#!/usr/bin/env python
# coding=utf-8
import requests
class RunMain:
"""
根据传入的URL、请求方式和请求参数来发送请求,并返回requests.models.Response
"""
def __init__(self):
pass
@staticmethod
def send_post(url, params=None):
# 传回的是json对象
try:
res = requests.post(url=url, data=params)
return res
except Exception as msg:
return msg
@staticmethod
def send_get(url, params=None):
try:
res = requests.get(url=url, params=params)
return res
except Exception as msg:
return msg
def run_main(self, url, method, params=None):
if method == 'GET':
print('This is a get request')
res = self.send_get(url, params)
elif method == 'POST':
print('This is a post request')
res = self.send_post(url, params)
# print('返回requests.models.Response:')
return res
else:
print('请重新输入请求方式')
return res
if __name__ == '__main__':
# url_dict0 = {
# 'url': 'http://baidu.com/',
# 'method': 'GET'
# }
url0 = 'http://baidu.com/'
params0 = {
'key1': 'params1', 'key2': 'params2'
}
Res = RunMain()
res0 = Res.run_main(url=url0, method='GET')
print(res0)
print(type(res0))
requests类封装如下:
#!/usr/bin/env python
# coding=utf-8
from receive_interface import RunMain
import requests
class ReCoSession:
def __init__(self, url):
self.url = url
@staticmethod
# 获取cookies
def res_cookies(url, method):
res = RunMain().run_main(url, method)
# 返回cookies并转换成字典
# res = requests.utils.dict_from_cookiejar(res.cookies)
if res is None:
print('cookies为空')
else:
return res.cookies
@staticmethod
# 发送cookies
def send_cookies(url, method, c_method):
if method == 'GET':
# c_method:0:表示是要从上一个请求的headers中获取cookies,1:使用cookies字典传入cookies
if c_method == 0:
# 随headers一起发送
headers = RunMain().run_main(url, method).headers
res = requests.get(url, headers=headers)
return res.cookies
else:
# 使用cookies字典传cookies参数
cookie = "sts=0; wc=58452; lc=58452; lc2=58452; wc_n=%25u5609%25u5174;" \
"bdUid=40965C47E1480000ACB39B550003; " \
"Hm_lvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552830300;" \
"Hm_lpvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552911186"
# 序列化处理:先将cookie使用分号分隔形成list,然后对list中元素用等号分隔,并配对成字典
cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in ''.join(cookie.split()).split("; ")}
# cookie_dict = {}
# for i in ''.join(cookie.split()).split(';'):
# cookie_dict[i.split('=')[0]] = i.split('=')[1]
# print(cookie_dict)
res = requests.get(url, cookies=cookie_dict)
return res.cookies
else:
# c_method:0:表示是要从上一个请求的headers中获取cookies,1:使用cookies字典传入cookies
if c_method == 0:
# 随headers一起发送
headers = RunMain().run_main(url, method).headers
res = requests.get(url, headers=headers)
return res.cookies
else:
# 使用cookies字典传cookies参数
cookie = "sts=0; wc=58452; lc=58452; lc2=58452; wc_n=%25u5609%25u5174;" \
"bdUid=40965C47E1480000ACB39B550003; " \
"Hm_lvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552830300;" \
"Hm_lpvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552911186"
# 序列化处理:先将cookie使用分号分隔形成list,然后对list中元素用等号分隔,并配对成字典
cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in ''.join(cookie.split()).split("; ")}
# cookie_dict = {}
# for i in ''.join(cookie.split()).split(';'):
# cookie_dict[i.split('=')[0]] = i.split('=')[1]
# print(cookie_dict)
res = requests.get(url, cookies=cookie_dict)
return res.cookies
@staticmethod
def res_session(self, url, method):
session = self.requests.session() # 建立一个session
if method == 'GET':
res = session.get(url)
else:
res = session.post(url)
return res
@staticmethod
# 获取json
def res_json(url, method):
print('n返回请求的json并转换成字典')
res = RunMain().run_main(url, method)
# res = res0.run_main(url=url, method=method)
try:
res = res.json()
except Exception as msg:
print(msg)
return res
if __name__ == '__main__':
# url_dict0 = {
# 'url': 'https://baidu.com/',
# 'method': 'POST'
# }
url0 = 'http://httpbin.org/'
data = {}
Res = ReCoSession(url=url0)
res_cookie = requests.utils.dict_from_cookiejar(Res.res_cookies(url=url0, method='GET'))
res_json = Res.res_json(url=url0, method='GET')
print(res_cookie, res_json)
持续更新中……