Python如何将CSV读取的字段值传入requests请求querystring参数
具体实现方法
核心逻辑是对齐两个列表的下标,逐组取出对应的线索ID和处置状态,构造querystring参数后通过requests发起POST请求即可,完整衔接你现有STEP1代码的实现如下:
首先安装缺失的依赖(已安装可跳过):pip install requests
完整可运行代码:
import pandas as pd import requests # ---------------- STEP1 你已实现的CSV读取逻辑 ---------------- df = pd.read_csv("names.csv") leadid = df["lead_id"].tolist() disposition = df["disposition"].tolist() # ---------------- STEP2 线索批量更新逻辑 ---------------- # 替换为你实际使用的Leadspedia线索更新接口地址 API_TARGET_URL = "替换为你的实际接口地址" # 先校验两列数据行数一致,避免参数错位 if len(leadid) != len(disposition): raise ValueError("CSV中lead_id和disposition列行数不匹配,请检查源文件") # 逐组配对发请求 for single_lead_id, single_disposition in zip(leadid, disposition): # 构造querystring参数字典,严格对应接口要求的参数名 querystring_params = { "leadID": single_lead_id, "disposition": single_disposition # 接口要求的其他固定参数(如api_key)直接在这里追加键值对即可 } try: # 发POST请求,params入参会自动把字典转成url拼接的query参数 response = requests.post( url=API_TARGET_URL, params=querystring_params, timeout=10 # 设置10秒超时,避免请求卡死 ) # 打印每条请求的结果方便核对 print(f"线索{single_lead_id}更新请求已发送,状态码:{response.status_code},返回:{response.text}") # 状态码异常时直接抛出错误 response.raise_for_status() except Exception as e: print(f"线索{single_lead_id}更新失败,错误:{str(e)}")
关键注意事项
requests库中,POST请求的params入参会自动将传入的字典编码为URL querystring拼接在请求地址后,完全匹配你需要的传参位置,不要把这部分参数写到data(表单参数)或json(JSON请求体)入参里,会导致接口无法从query中取到参数。- 代码里加了两个列表的长度校验,避免CSV中两列数据行数不一致导致的参数错位问题;遍历使用
zip()函数配对,能保证每一组lead_id和disposition都是CSV里同一行的对应值。 - 代码加了单条请求的异常捕获,单条线索更新失败不会中断整个批量任务,控制台会打印每条请求的状态和返回内容,方便后续排查失败数据。
- 如果单次要处理的线索量超过1000条,建议在循环内加入请求间隔避免触发接口限流,示例:导入
time模块后在每次请求结束后加time.sleep(0.2),控制请求频率为每秒5次。
内容的提问来源于stack exchange,提问作者Keegan Dhue
相关产品推荐
相关产品推荐

