Python Requests中使用文本文件作为数据输入的问题求助
问题分析与解决方案
你的核心问题是直接将文本文件的行内容作为data参数传入请求,导致表单数据格式不符合网站要求。
单个请求中data={'Uid': '0587848'}是正确的表单格式,Requests会自动将其编码为Uid=0587848的application/x-www-form-urlencoded格式。但你直接传入文本文件的行内容时:
- 如果文本每行是纯UID(如
0587848),请求数据会变成0587848(无键名Uid),网站自然提示缺少参数; - 如果文本每行是类似
{'Uid': '0587848'}的字符串,Requests会把它当成原始文本发送,而非解析为表单键值对,网站同样无法识别。
修复步骤
1. 规范文本文件格式
将a.txt改为每行仅存纯UID,无任何引号或额外字符:
0587848 1234567 9876543
2. 修改请求代码
在循环中处理每行内容,构造正确的表单数据:
with open(str_current_datetime+'.txt', 'w') as outfile: with open('a.txt') as fp: for line in fp: # 去除行尾换行符和空白字符 uid = line.strip() # 跳过空行 if not uid: continue # 构造正确的表单数据 form_data = {'Uid': uid} ull = requests.post( 'https://thesite1234.com/Professionals/Inquiry/Main/FetchPerson', cookies=cookies, headers=headers, data=form_data ) print(ull.text, file=outfile) print(ull.text)
额外注意事项
- 若文本文件存在编码问题,打开时指定编码(如
open('a.txt', encoding='utf-8')); - 避免请求频率过高导致网站封禁,可添加
time.sleep(1)控制请求间隔。
内容的提问来源于stack exchange,提问作者KAEK KAEK
相关产品推荐
相关产品推荐

