网页爬取遇AttributeError: 'NoneType'无text属性但部分内容可爬取的原因?
错误原因解析
你遇到的AttributeError: 'NoneType' object has no attribute 'text',本质是当前遍历的class为item的div元素里,找不到class是content的子元素——find(class_='content')返回了None,你直接调用它的text属性就触发了错误。具体可能的情况有这几种:
- 页面条目结构不一致:部分
item类的div本身就没有content子节点,比如页面里的分隔栏、空条目、提示类区块,它们的布局和正常交易条目不同。 - 动态内容未加载:目标网页的部分交易内容是通过JavaScript动态渲染的,
requests只能抓取静态HTML源码,这部分动态生成的content元素在你拿到的页面里根本不存在。 - 选择器匹配偏差:
content类的元素可能不是itemdiv的直接子节点,或者页面里有同名但层级不对的元素,导致find()没匹配到你要的节点。 - 网页结构更新:网站可能调整了页面布局,修改了
content的类名或者元素嵌套结构,原有的选择器失效了。
你可以在代码里加个判断来排查具体是哪种情况:
for quote_div in soup.find_all('div', class_='item'): content_elem = quote_div.find(class_='content') if content_elem: # 正常处理内容 print(content_elem.text.strip()) else: # 输出当前item的HTML,查看结构差异 print("无content元素的item区块:", quote_div)
内容的提问来源于stack exchange,提问作者CY Dennis
相关产品推荐
相关产品推荐

