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

Python爬虫出现'NoneType' object is not iterable报错如何解决?

问题原因
  • 直接触发报错的原因是你实际执行的代码用了find()方法而非业务逻辑中写的find_all():find()方法在匹配不到符合条件的元素时会返回None,直接遍历None对象就会触发'NoneType' object is not iterable的类型错误。而find_all()匹配不到时会返回空列表,遍历空列表不会触发报错。
  • 匹配规则存在失效可能:你用的正则re.compile('p p*')是匹配class属性值为「p 开头+后续0个或多个p」的内容,如果目标p标签的class属性不符合这个格式(比如多类顺序调整、存在其他类名、类名格式和你预期不符),就会匹配不到内容,导致find()返回None。
修复方案
  1. 统一使用find_all()获取元素,避免单元素匹配返回None的问题
  2. 优化class匹配规则,也可以直接用CSS选择器简化写法,匹配更稳定
  3. 可选增加判空逻辑,进一步兼容异常情况

修复后代码示例

import re
# 原有逻辑修改部分
test_list = []
# 用find_all替代find,匹配不到返回空列表不会报错
test = call.find_all('p', class_ = re.compile(r'p p.*')) # 正则调整为匹配p 开头后面跟任意字符,适配p p1、p p_text这类类名
for c in test:
    x = c.text.strip()
    test_list.append(x)

if ('Operator' in test_list) and ('Conference Call Participants' in test_list):
    # 后续业务逻辑不变
    cc_id = counter

如果你的目标是匹配所有class包含p类的p标签,也可以用更简单的CSS选择器写法,不需要正则:

test = call.select('p.p')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:18:04