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

BeautifulSoup中findAll方法报错:无法调用find属性的问题求助

解决BeautifulSoup中findAll()无法链式调用find()的问题

你遇到的错误原因很明确:findAll()(或find_all())返回的是一个ResultSet对象,本质就是元素列表,而不是单个Tag对象。列表本身没有find()方法,所以直接链式调用会报错。要批量处理多个元素,你需要遍历这个列表,对每个元素单独调用find()方法。

正确代码示例

方法一:循环遍历处理

先获取所有目标父元素,再逐个提取子元素信息:

# 获取页面中所有50个styles_root__ti07r元素
all_movies = soup.find_all('div', class_='styles_root__ti07r')

# 初始化列表存储所有电影信息
movie_info_list = []

for movie in all_movies:
    # 提取俄语名称
    ru_name = movie.find('div', class_='base-movie-main-info_mainInfo__ZL_u3').find('span', class_='styles_mainTitle__IFQyZ styles_activeMovieTittle__kJdJj').text
    # 提取原名
    original_name = movie.find('div', class_='styles_main__Y8zDm styles_mainWithNotCollapsedBeforeSlot__x4cWo').find('span', class_='desktop-list-main-info_secondaryTitle__ighTt').text
    # 提取简介文本
    remain = movie.find('div', class_='styles_main__Y8zDm styles_mainWithNotCollapsedBeforeSlot__x4cWo').find('span', class_='desktop-list-main-info_truncatedText__IMQRP').text
    
    # 将单条电影信息存入列表
    movie_info_list.append({
        '俄语名称': ru_name,
        '原名': original_name,
        '简介': remain
    })

# 打印所有结果
for info in movie_info_list:
    print(info)

方法二:列表推导式(简洁写法)

如果代码逻辑简单,可以用列表推导式一次性生成结果:

all_movies = soup.find_all('div', class_='styles_root__ti07r')

movie_info_list = [
    {
        '俄语名称': movie.find('div', class_='base-movie-main-info_mainInfo__ZL_u3').find('span', class_='styles_mainTitle__IFQyZ styles_activeMovieTittle__kJdJj').text,
        '原名': movie.find('div', class_='styles_main__Y8zDm styles_mainWithNotCollapsedBeforeSlot__x4cWo').find('span', class_='desktop-list-main-info_secondaryTitle__ighTt').text,
        '简介': movie.find('div', class_='styles_main__Y8zDm styles_mainWithNotCollapsedBeforeSlot__x4cWo').find('span', class_='desktop-list-main-info_truncatedText__IMQRP').text
    }
    for movie in all_movies
]

额外注意事项

如果页面中存在个别元素缺失子标签的情况,直接调用.text会触发AttributeError。建议增加空值判断,提升代码健壮性:

# 示例:处理可能不存在的子元素
ru_name_tag = movie.find('div', class_='base-movie-main-info_mainInfo__ZL_u3').find('span', class_='styles_mainTitle__IFQyZ styles_activeMovieTittle__kJdJj')
ru_name = ru_name_tag.text.strip() if ru_name_tag else '无数据'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:45:39