准备工作
这一部分需要用到request模块,准备工作就是安装request模块。
安装方法移步:https://www.cnblogs.com/jszfy/p/11210783.html
用request.get()发起请求
import requests
# 1、构造请求的URL
url = "http://..."
# 2、创建请求参数
params = {
"mobilephone": "18012345678",
"pwd": "123456",
"regname": "zfy"
}
headers ={
"User-Agent":"Mozillas/5.0 test"
}
# 3、向服务器发起请求
res = requests.get(url, params=params, headers=headers)
print(res.text)
print(res.json())
print(res.cookies)
res:返回的【response】对象,可以通过【res.属性名】来获取相应的属性内容。
根据URL可以看出,这里是使用【查询字符串参数】的格式进行传参的。


headers不一定要改,因为有的网站有反爬虫措施,所以需要自己添加合法的请求头。
但是大多数情况下不用修改。
用request.post()方法发起请求
import requests
# 1、构造请求的URL
url = "http://...."
# 2、创建请求参数
params = {
"mobilephone": "17012345678",
"pwd": "123456",
"regname": "zfy"
}
headers ={
"User-Agent": "Mozillas/5.0 test"
}
# 3、向服务器发起请求
# 将参数传递给params,是以查询字符串参数的形式传递参数的
res = requests.post(url, params=params, headers=headers) # 返回的是一个response对象,可以把它当做一个响应报文。
# 将参数传递给data,会以x-www-form-urlencoded的形式来传参
res2 = requests.post(url, data=params, headers=headers)
# 如果给json传参,会以json格式的字符串形式来传参。
res3 = requests.post(url, json=params, headers=headers)
测试的某个接口需要使用多个URL
import requests
# 1、构造请求URL
login_url = "http://。。"
recharge_url = "http://。。"
# 2、创建请求参数
login_params = {
"mobilephone": "17012345678",
"pwd": "123456",
}
recharge_params ={
"mobilephone": "17012345678",
"amount": "500000",
}
headers = {
"User-Agent": "Mozilla/5.0 sunny"
}
# 3. 向服务器发起请求
# 先登录
login_res = requests.post(login_url, data=login_params, headers=headers)
# cookie = login_res.cookies['JSESSIONID']
cookie = login_res.cookies
# 充值
recharge_res = requests.post(recharge_url, data=recharge_params, headers=headers, cookies=cookie)
session会话
创建会话对象session,可以管理cookie值,而不用手动传递。
关闭会话之后,依然可以发起请求、
# 向服务器发起请求 one_session = requests.Session() # 先登录 login_res = one_session.post(login_url, data=login_params, headers=headers) # 充值 recharge_res = one_session.post(recharge_url, data=recharge_params, headers=headers) # 关闭会话 # 关闭之后, 依然可以发起请求 # 关闭会话只不过是释放资源 one_session.close()
封装
class HandleRequest:
"""
处理请求
"""
def __init__(self):
self.one_session = requests.Session()
def to_request(self, url, method="post", data=None, is_json=False):
# data = '{"name": "Elice"}' # json格式的字符串
# data = "{'name': 'Elice'}" # 字典类型的字符串
if isinstance(data, str):
try:
data = json.loads(data)
except Exception as e:
print("使用日志器来记录日志")
data = eval(data)
method = method.lower()
if method == "get":
res = self.one_session.get(url, params=data)
elif method == "post":
if is_json: # 如果is_json为True, 那么以json格式的形式来传参
res = self.one_session.post(url, json=data)
else: # 如果is_json为False, 那么以www-form的形式来传参
res = self.one_session.post(url, data=data)
else:
res = None
print("不支持【{}】其他方法的请求".format(method))
def close(self):
self.one_session.close()