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

Python爬虫脚本如何跳过循环最后一次迭代的time.sleep延时

方案合理性评估

你当前的实现方案在user_list无重复元素的场景下可以正常运行,但存在明显缺陷:如果列表内存在和末尾元素相同的重复值,判断user == user_list[-1]会误判提前跳过sleep,导致API请求频率过高触发限制。

更优实现方案

推荐两种更通用的实现思路:

方案1:通过索引判断(可读性高)

用enumerate同时获取迭代的索引和元素,直接判断当前是否为最后一次迭代,不受元素值重复的影响:

# First part, downloading.
for idx, user in enumerate(user_list):
    print(user)
    scraper()
    # 非最后一次迭代才执行sleep
    if idx != len(user_list) - 1:
        sleep_seconds = random.randint(300*1000, 600*1000)/1000
        print('Sleeping for {} seconds...'.format(sleep_seconds))
        time.sleep(sleep_seconds)

# Second part, parsing.
parser()

方案2:调整sleep逻辑位置(更简洁)

两次爬取操作之间才需要间隔等待,所以可以把sleep放到下一次爬取之前执行,完全不需要判断是否为末尾元素:

# First part, downloading.
if user_list:
    # 第一次爬取不需要前置等待
    user = user_list[0]
    print(user)
    scraper()
    # 后续每次爬取前先等待
    for user in user_list[1:]:
        sleep_seconds = random.randint(300*1000, 600*1000)/1000
        print('Sleeping for {} seconds...'.format(sleep_seconds))
        time.sleep(sleep_seconds)
        print(user)
        scraper()

# Second part, parsing.
parser()

注意你原有代码里存在单位输出错误,sleep计算的是秒,但打印写的是minutes,使用时需要修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:09:04