分步骤发起requests请求
# 导入requests模块 # 定义一个url,构造一个请求的url url = "http://host/lujing" # 定义参数,创建请求参数 params = { "mobile": "18200004321", "pwd": "123456", } # 修改请求头中的请求客户端 # 反爬虫措施,需要自己添加合法的请求,一般不需要修改 headers = { "User-Agent": "Mozilla/5.0" } # 创建Session会话对象,相当于Jmeter中的cookie管理器 session = requests.Session() # 发起请求,向服务器发起 请求 # 如果给params传参,就是以查询字符产的形式传参 res = requests.get(url=url, params=params, headers=headers) # 如果给data传参,那么会以x-www-from-urlencoded的形式来传参 res = requests.post(url=url, data=params, headers=headers) # 返回的是一个Response对象,可以把它当作响应报文 # 如果给json传参,那么会以json格式的形式来传参 # 这里的params既可以是字典,也可以是json格式的字符串 # 所有的参数,都转化为字典来传递 res = requests.get(url=url, params=params, headers=headers) print(res.status_code) # 获取响应状态码 print("text格式的报文为【{}】".format(res.text)) # 获取响应报文 print(res.json()) # 将响应的报文转化为python的中的数据类型 print(res.cookies) # 获取cookie pass
requests的封装
import requests import json class HandleRequests: """ 封装requests类 """ def __init__(self): """ 定义一个session的参数 """ self.session = requests.Session() def get_requests(self, url, method="post", data=None, is_json=False): """ 向服务器发起请求 :param url: 请求的地址 :param method: 请求的方式 :param data: 请求的参数 :param is_json: 是否为json字符串格式 :return: """ # 如果数据为json格式的字符串,则转换为str if isinstance(data, str): try: data = json.load(data) except Exception: data = eval(data) # 请求方式为全部小写字母 method = method.lower() # 如果请求方式为get if method == "get": res = self.session.get(url, params=data) # 如果请求方式为post elif method == "post": # 如果is_json为True,那么以json形式传参 if is_json: res = self.session.post(url, json=data) # 如果is_json为False,那么以www-from表单形式传参 else: res = self.session.post(url, data=data) else: print("不支持除了【{}】以外的请求方式".format(method)) return res def close(self): """ 关闭请求链接 :return: """ self.session.close()