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

BeautifulSoup循环报错:ResultSet对象无'%s'属性问题排查

问题排查与修复方案

嘿,我一眼就瞅到你代码里的关键问题了,咱们一步步拆解:

核心bug:变量名覆盖了BeautifulSoup类

你这段代码里有个致命的变量名冲突:

soup = soup(c, "html.parser")

第一次循环时,soup会被赋值为一个BeautifulSoup实例对象。但到第二次循环的时候,你再写soup(c, ...),其实是在调用这个已经变成实例的soup,而不是初始化新的BeautifulSoup对象!这就直接触发了那个"ResultSet object has no attribute..."的错误——因为BeautifulSoup实例不是可调用的,而且如果中间逻辑返回了列表类型的ResultSet,错误会更明显。

第一步:修复变量名冲突

把实例变量名改成和类名不一样的,比如page_soup,同时确保你正确导入了BeautifulSoup类:

from bs4 import BeautifulSoup  # 先确认导入了这个类
import requests

for i in range(0,2):
    url = "https://www.blah.com/" + get_chapter(chron_list[i])
    book = requests.get(url, headers=headers)
    c = book.content
    page_soup = BeautifulSoup(c, "html.parser")  # 这里用新的变量名,避免覆盖类引用
    print(page_soup.prettify())

第二步:验证get_chapter的返回值

虽然单独跑索引0或1时代码能运行,但还是得确认get_chapter(chron_list[i])每次都返回字符串类型的章节路径。如果这个函数里用了find_all,返回的会是ResultSet(也就是列表),拼接URL时会出问题。你可以加个打印来验证:

for i in range(0,2):
    chapter_path = get_chapter(chron_list[i])
    print(f"索引{i}的章节路径:{chapter_path},类型:{type(chapter_path)}")
    url = "https://www.blah.com/" + chapter_path
    # 后续请求和解析代码...

如果输出的类型是bs4.element.ResultSet,那你得修改get_chapter函数,比如把find_all换成find(取单个元素),或者从ResultSet里提取你需要的字符串元素。

为啥单独循环0或1时没问题?

因为单次循环时,程序在page_soup(原soup)被赋值为实例后就直接结束了,不会触发第二次调用实例的错误。但循环两次时,第二次会尝试把之前的实例当函数用,自然就报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:35:25