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

Python循环第50次迭代无法进入Try/Except块求助

问题排查与解决方案

1. 请求未设超时,程序卡住

你写的scraper.get(url, headers=headers)没加超时参数,一旦遇到服务器无响应、网络卡壳或者IP被临时限制,程序会一直卡在请求环节,看起来就是“停止且无报错”。

解决办法:
给请求加个超时,比如10秒:

r = scraper.get(url, headers=headers, timeout=10)

2. 请求频率触发反爬限制

连续发49次请求后,你的IP大概率被目标网站的反爬机制盯上了,哪怕换第50条URL,同一IP的请求还是会被拦,导致程序卡壳。

解决办法:

  • 每次请求后加个延迟,比如停1秒:
    import time
    # 放在循环末尾
    time.sleep(1)
    
  • 完善请求头,模拟真实浏览器(比如补全User-Agent、Referer这些字段)
  • 用代理IP轮换着发请求

3. 第50条URL格式有问题

你用x[:-1]处理换行,但可能有空行、全角空格或者无效字符混在URL里,导致请求前出了问题但没被捕获。

解决办法:

  • 重新清理URL列表,过滤空值和无效项:
    clean_url_list = []
    for x in indexed_url_list:
        url = x.strip()  # 去掉首尾的空格、换行、制表符
        if url:  # 跳过空行
            clean_url_list.append(url)
    
  • 直接打印第50条URL看看:
    print("第50条URL:", clean_url_list[49])
    

4. 文件没关导致资源占用

你打开URL文件后没关闭,虽然内容已经读进来,但跑久了可能占资源,影响后续迭代。

解决办法:
用with语句自动管文件,不用手动关:

with open("/Users/my_name/Documents/Website Categorization and Scrapper Python/url_list copy", "r") as url_list:
    indexed_url_list = url_list.readlines()
clean_url_list = [x.strip() for x in indexed_url_list if x.strip()]

5. 异常捕获没覆盖全

现在的except Exception as e抓不住所有异常,而且try块只包了请求和解析的代码,前面的print、url=x要是出问题也没被捕获。

解决办法:

  • 把循环里的所有步骤都放进try块,再加上索引日志,方便定位:
    for idx, url in enumerate(clean_url_list):
        try:
            print(f'正在处理第{idx+1}条URL: {url}')
            r = scraper.get(url, headers=headers, timeout=10)
            # 后面的解析代码...
        except Exception as e:
            print(f'第{idx+1}条URL({url})处理失败: {str(e)}')
    

6. 会话连接池耗尽

如果scraper是requests.Session对象,连续请求后连接池可能被占满,新请求发不出去。

解决办法:

  • 每次请求后关闭连接:
    r = scraper.get(url, headers=headers, timeout=10)
    r.close()
    
  • 每50次请求重新创建一次会话:
    for idx, url in enumerate(clean_url_list):
        if idx % 50 == 0:
            scraper = requests.Session()
            scraper.headers.update(headers)
        # 请求代码...
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:06:18