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

Python中While循环未正常运行:无法正确重试获取目标元素

问题分析:循环重试未更新Soup导致逻辑失效

嘿,我一眼就发现问题所在啦!你的代码里有个关键的逻辑漏洞——你在循环外部只做了一次请求和Soup解析,之后的循环里完全没有更新soup对象!

咱们来拆解下问题根源:

  • 你第一次发起请求并解析得到soup后,这个soup就固定是第一次请求的页面内容了
  • 之后每次循环判断的都是这个旧的soup,哪怕目标页面已经更新出了你要找的元素,你的代码也不会去重新获取新的页面内容
  • 所以如果第一次请求没找到目标元素,循环就会一直重复判断旧的结果,永远跳不出去

修正后的代码

import time
from bs4 import BeautifulSoup

# 把请求和解析逻辑放到循环内部,每次重试都拉取最新页面
while True:
    r = self.session.get(url, headers=headers)
    soup = BeautifulSoup(r.content, "html.parser")
    if soup.find_all('div', {'class': 'function'}):
        print ('Found soup...')
        break
    time.sleep(3)
    print ('Not Found... Trying again.')

额外健壮性建议

为了避免无限循环(比如页面永远不会出现目标元素的极端情况),最好给重试加个次数限制,防止程序一直挂起:

max_retries = 10
retry_count = 0
while retry_count < max_retries:
    r = self.session.get(url, headers=headers)
    soup = BeautifulSoup(r.content, "html.parser")
    if soup.find_all('div', {'class': 'function'}):
        print ('Found soup...')
        break
    retry_count += 1
    time.sleep(3)
    print (f'Not Found... Trying again. Retry {retry_count}/{max_retries}')
else:
    print("Max retries reached, target element not found.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:15:38