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

反复出现AttributeError:'NoneType'对象无'find_all'属性的问题求助

报错原因与解决方案

报错核心原因

AttributeError: 'NoneType' object has no attribute 'find_all' 本质是results变量为None——也就是soup.find('div', {'id': 'cmp-container'})没有找到匹配的元素。常见触发场景:

  • 请求被反爬拦截:返回403/验证码页面等异常内容,导致解析不到目标元素
  • User-Agent不合法:你使用的UA同时混合了老旧版本的Firefox和Chrome标识,极易被识别为爬虫
  • 页面结构更新:Indeed的企业评论页面布局已变更,cmp-container这个ID可能已被移除

针对性解决方案

1. 修复请求基础配置

  • 替换为真实、现代的浏览器User-Agent,避免被反爬识别
  • 增加请求状态码校验,确保页面正常返回
  • 添加请求延时,降低反爬触发概率

2. 增加空值安全判断

在调用find_all前先检查results是否有效,避免循环因报错中断

修改后的代码示例

import requests
from bs4 import BeautifulSoup
import time

for i in range(10,140,20):
    url = f'https://www.indeed.com/cmp/Ey/reviews?fcountry=IT&start={i}'
    # 使用真实现代浏览器的User-Agent
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'}
    
    try:
        page = requests.get(url, headers=header, timeout=10)
        # 校验请求是否成功
        if page.status_code != 200:
            print(f"请求失败,状态码:{page.status_code},URL:{url}")
            continue
        
        soup = BeautifulSoup(page.content, 'lxml')
        results = soup.find('div', {'id': 'cmp-container'})
        
        # 检查是否找到目标容器
        if not results:
            print(f"未找到目标容器,URL:{url}")
            # 可取消注释查看页面片段,排查结构变化或反爬情况
            # print(page.content[:500])
            continue
        
        elems = results.find_all(class_="cmp-Review-container")
        # 后续处理评论的逻辑...
        print(f"成功抓取{len(elems)}条评论,URL:{url}")
        
        # 控制请求频率,避免反爬
        time.sleep(2)
        
    except Exception as e:
        print(f"处理URL {url}时出错:{str(e)}")
        time.sleep(3)

额外排查建议

如果仍无法找到cmp-container,取消代码中print(page.content[:500])的注释,查看返回内容:

  • 若返回验证码/登录提示:需增加Cookie或使用代理IP绕过反爬
  • 若返回页面结构完全不同:用浏览器开发者工具重新定位评论容器的新选择器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:52:15