如何用Python循环执行CURL请求直到输出数值匹配指定值?
Python实现循环调用接口直到数值匹配
实现思路
直接用Python的requests库发送POST请求(替代curl命令,更易处理响应和解析数据),循环执行请求直到返回的随机数值与目标值1234567相等。
步骤1:安装依赖
先安装requests库:
pip install requests
步骤2:完整代码实现
import requests import re import time TARGET_NUMBER = 1234567 URL = "http://xyz.website" HEADERS = { "accept": "application/json", "Content-Type": "application/x-www-form-urlencoded" } DATA = {"number": str(TARGET_NUMBER)} while True: try: # 发送POST请求 response = requests.post(URL, headers=HEADERS, data=DATA) response.raise_for_status() # 捕获HTTP请求错误 # 解析响应文本,提取随机数值 response_text = response.text.strip().strip('"') # 用正则匹配数字部分,适配给定的响应格式 match = re.search(r"not equal (\d+)", response_text) if not match: print("无法解析响应内容,跳过本次请求") time.sleep(1) continue random_number = int(match.group(1)) print(f"当前随机数值:{random_number}") # 对比数值,相等则退出循环 if random_number == TARGET_NUMBER: print("数值匹配成功,退出循环") break # 避免请求过于频繁,设置1秒延迟 time.sleep(1) except requests.exceptions.RequestException as e: print(f"请求出错:{e}") time.sleep(2) # 出错后延迟2秒再重试
代码说明
- 请求构造:完全对应原curl的请求参数,包括URL、请求头和表单数据
- 响应解析:用正则表达式精准提取输出中的随机数值,适配给定的响应格式
- 异常处理:捕获HTTP请求异常,避免程序崩溃,出错后自动重试
- 流量控制:加入延迟时间,防止短时间内发送大量请求给服务器造成压力
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

