从文本文件向Python Requests传递数据仅传入最后一行的问题
问题解决:循环读取每行数据并发送请求
你的问题核心是请求代码放在了循环外部——循环中只是反复将data变量更新为当前行内容,但整个循环结束后才执行一次requests.post,自然只会发送最后一行的数据。
修正方法很直接,把请求操作移到循环内部,让每读取一行就发送一次请求,同时要去掉每行末尾的换行符(避免JSON格式异常):
import requests import json cookies = { 'cookieconsent_status': 'deny', 'AWSALB': '**************************************************/Q==', 'AWSALBCORS': '*********************************************==', 'ctfloginPha': '******************************************************n', } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0', 'Accept': 'application/json', 'Accept-Language': 'en-US,en;q=0.5', # 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': '**************************==', 'X-Requested-With': 'XMLHttpRequest', 'Origin': 'https://**************', 'Connection': 'keep-alive', 'Referer': 'https://********************', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', } with open('person.txt') as fl: for line in fl: # 移除每行末尾的换行符和空白字符 data = line.strip() # 将请求放入循环内,每行数据对应一次请求 response = requests.post( 'https://***************************************', cookies=cookies, headers=headers, data=data, ) print(response.json())
额外补充两个优化建议:
- 原文本格式
{person:123456}不符合标准JSON规范(键名需用双引号),如果接口返回格式错误,可转成标准JSON:# 提取person值并生成标准JSON字符串 person_id = line.strip().split(':')[1].strip('}') data = json.dumps({"person": int(person_id)}) - 若需避免频繁请求给服务器造成压力,可导入
time模块,在每次请求后添加time.sleep(1),暂停1秒再发送下一次请求。
内容的提问来源于stack exchange,提问作者james
相关产品推荐
相关产品推荐

