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

Beautiful Soup在for循环中仅运行一次就失效的问题如何解决

问题根因

你的代码在第一次循环时直接覆盖了原始的完整HTML页面对应的soup对象,后续循环都是在第一次提取出的单条成绩HTML片段中查找其他id,自然匹配不到结果。

修正后代码

from bs4 import BeautifulSoup

classid = ["ccid_10132191", "ccid_10132192", 'ccid_9829339', 'ccid_9829337']

with open('output.html') as fp:
    # 全局完整soup仅初始化一次,不要在循环内覆盖
    soup = BeautifulSoup(fp, 'html.parser')

for classes in classid:
    # HTML中id属性唯一,直接用find在完整文档中定位目标行,不需要find_all
    target_tr = soup.find(id=classes)
    if not target_tr:
        print(f"未找到id为{classes}的成绩项")
        continue
    # 直接在定位到的tr节点下查找目标元素,不需要转字符串重新生成soup
    print(target_tr.find(class_='bold').contents)

修正说明

  • 保留完整HTML的soup对象不被修改,保证每次查找的范围都是整个文档
  • 省略了把匹配结果转字符串再重新解析为soup的冗余步骤,直接在定位到的元素下做二次查找,运行效率更高
  • 增加空值判断,避免遇到不存在的id时代码直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:54:06