You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python数据解析器?需请求指定范围的API页面

修复后的代码及问题说明

问题点分析

  • URL拼接错误:你把字符串'i'直接写进URL里,导致请求固定地址https://example.com/api/v1/operators/dialogs/i,没有替换成循环变量i的数值。
  • 循环范围不符合需求:设置的range(1500000)会从0循环到1499999,但实际需要的是1到999。
  • 会话重复创建:每次循环新建httpx.Client(),效率低下,不符合最佳实践,应该在循环外创建一次会话复用连接。

修复后的代码

import httpx
import time
from loguru import logger

def parser():
    # 循环外创建会话,复用连接
    with httpx.Client() as session:
        # 循环范围改为1到1000(range左闭右开,所以写1000覆盖到999)
        for i in range(1, 1000):
            logger.info(f"page number {i}")
            # 用f-string将变量i插入URL
            response = session.get(f'https://example.com/api/v1/operators/dialogs/{i}')
            # 先判断请求是否成功,避免写入无效内容
            if response.status_code == 200:
                with open('result.txt', 'a', encoding='utf8') as f:
                    f.write(f"{response.text}\n")
                logger.debug(f"Reply from the server {response.text}")
                logger.success(f"page {i} written to txt")
            else:
                logger.error(f"page {i} request failed, status code: {response.status_code}")
            # 添加请求间隔,避免给服务器造成过大压力
            time.sleep(0.5)

parser()

额外优化说明

  • 增加请求状态码校验,仅当请求成功(200状态码)时才写入文件,避免错误内容污染结果。
  • 加入time.sleep(0.5)控制请求频率,防止触发服务器反爬机制或导致服务过载。
  • 使用with语句管理httpx.Client(),自动处理会话关闭,更安全可靠。

内容的提问来源于stack exchange,提问作者voskoboj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:50:50