以下是一段实现上述功能的Python代码: ```python import requests import re import json import openpyxl # 登录请求函数 def login(username, password): # 获取验证码图片 code_url = "http://www.example.com/getCode" response = session.get(code_url) # 解析验证码图片 code_pattern = r'base64,(.*)\'' code_image = re.findall(code_pattern, response.text)[0] # 使用验证码识别API识别验证码 code_api_url = "http://www.example.com/checkCode" code_data = {"img": code_image} headers = { 'Content-Type': 'application/json' } # 发送验证码识别请求 code_response = requests.post(code_api_url, data=json.dumps(code_data), headers=headers) code = code_response.json().get('result') # 构造登录请求 login_url = "http://www.example.com/login" login_data = { 'username': username, 'password': password, 'code': code } # 发送登录请求 login_response = session.post(login_url, data=login_data) # 返回登录响应 return login_response # 获取基础数据函数 def get_data(): # 构造获取数据请求 data_url = "http://www.example.com/getData" data_response = session.get(data_url) # 解析数据并返回 return data_response.json() # 将数据存储到excel中 def save_to_excel(data): # 创建新的excel工作簿 wb = openpyxl.Workbook() # 获取默认的工作表 sheet = wb.active # 循环保存数据到工作表中 for row_num, row_data in enumerate(data, start=1): for col_num, col_data in enumerate(row_data, start=1): sheet.cell(row=row_num, column=col_num, value=col_data) # 保存工作簿到本地excel文件 wb.save("data.xlsx") # 使用username和password进行登录 username = "my_username" password = "my_password" session = requests.Session() login_response = login(username, password) # 判断是否登录成功 if "登录成功" in login_response.text: # 登录成功,获取cookie cookie = session.cookies.get_dict() print("cookie:", cookie) # 使用cookie获取数据 session.headers.update({'cookie': '; '.join([f"{key}={value}" for key, value in cookie.items()])}) data = get_data() print("获取到的数据:", data) # 将数据存储到excel中 save_to_excel(data) else: # 登录失败,打印错误信息 print("登录失败") print("错误信息:", login_response.text) ``` 具体步骤如下: 1. 导入必要的Python库 ```python import requests import re import json import openpyxl ``` 2. 实现登录请求函数 ```python def login(username, password): # 获取验证码图片 code_url = "http://www.example.com/getCode" response = session.get(code_url) # 解析验证码图片 code_pattern = r'base64,(.*)\'' code_image = re.findall(code_pattern, response.text)[0] # 使用验证码识别API识别验证码 code_api_url = "http://www.example.com/checkCode" code_data = {"img": code_image} headers = { 'Content-Type': 'application/json' } # 发送验证码识别请求 code_response = requests.post(code_api_url, data=json.dumps(code_data), headers=headers) code = code_response.json().get('result') # 构造登录请求 login_url = "http://www.example.com/login" login_data = { 'username': username, 'password': password, 'code': code } # 发送登录请求 login_response = session.post(login_url, data=login_data) # 返回登录响应 return login_response ``` - 使用requests库发送HTTP请求,获取验证码图片,并使用正则表达式解析出base64编码的图片内容。 - 将图片内容发送至验证码识别API,获取识别结果。 - 构造登录请求,并发送至网站。 - 返回登录响应。 3. 实现获取基础数据函数 ```python def get_data(): # 构造获取数据请求 data_url = "http://www.example.com/getData" data_response = session.get(data_url) # 解析数据并返回 return data_response.json() ``` - 使用requests库发送HTTP请求,获取基础数据。 - 解析返回的JSON格式数据,并返回。 4. 实现将数据存储到excel中的函数 ```python def save_to_excel(data): # 创建新的excel工作簿 wb = openpyxl.Workbook() # 获取默认的工作表 sheet = wb.active # 循环保存数据到工作表中 for row_num, row_data in enumerate(data, start=1): for col_num, col_data in enumerate(row_data, start=1): sheet.cell(row=row_num, column=col_num, value=col_data) # 保存工作簿到本地excel文件 wb.save("data.xlsx") ``` - 使用openpyxl库创建新的excel工作簿。 - 获取默认的工作表。 - 使用循环将基础数据保存到工作表中。 - 将工作簿保存到本地excel文件。 5. 使用用户名密码进行登录,获取cookie ```python # 使用username和password进行登录 username = "my_username" password = "my_password" session = requests.Session() login_response = login(username, password) # 判断是否登录成功 if "登录成功" in login_response.text: # 登录成功,获取cookie cookie = session.cookies.get_dict() print("cookie:", cookie) ``` - 调用上述实现的登录请求函数进行登录。 - 判断登录是否成功(登录成功的返回值中应包含“登录成功”字样)。 - 获取登录成功后的cookie,并打印。 6. 利用cookie获取基础数据 ```python # 使用cookie获取数据 session.headers.update({'cookie': '; '.join([f"{key}={value}" for key, value in cookie.items()])}) data = get_data() print("获取到的数据:", data) ``` - 根据获取到的cookie更新session对象的header,添加cookie信息。 - 调用上述实现的获取基础数据函数,获取数据。 - 打印获取到的数据。 7. 将数据存储到excel中 ```python # 将数据存储到excel中 save_to_excel(data) ``` - 调用上述实现的将数据存储到excel中的函数,将数据存储到本地excel文件中。