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

使用BeautifulSoup解析div的data-count属性时遇NoneType调用错误求助

解决BeautifulSoup解析时出现'NoneType' object is not callable的问题

这个错误本质很简单:你尝试调用一个None对象的方法了。说白了就是你的BeautifulSoup查询没找到目标<div>元素,返回了None,但你还接着对它调用了get()或者其他方法,自然就触发这个报错了。

针对你给出的HTML片段,我给你一套可靠的解决方案,一步步来:

首先,确保你正确初始化BeautifulSoup并加载了HTML内容,然后按正确的方式定位元素并提取属性:

from bs4 import BeautifulSoup

# 先把你的HTML内容准备好(实际场景中可能是从请求响应、本地文件读取的)
html_content = '<div class="sort-line selected" data-discount="3392" data-count="669" data-ship_price="0" >'
soup = BeautifulSoup(html_content, 'html.parser')

# 定位目标div元素——这里有两种常用方式:
# 方式1:用find方法,指定class列表(因为元素有多个class值)
target_div = soup.find('div', class_=['sort-line', 'selected'])
# 方式2:用CSS选择器,更贴近前端写法
# target_div = soup.select_one('div.sort-line.selected')

# 关键:先判断元素是否存在,再提取属性
if target_div:
    count_value = target_div.get('data-count')
    print(count_value)  # 这里会输出你要的"669"
else:
    print("没找到目标元素,请检查HTML结构或选择器是否正确")

你可能踩的坑:

  • 直接链式调用:比如你可能写了soup.find(...).get('data-count'),如果find()返回None(元素没找到),get()就会触发那个报错,所以一定要先判断元素是否存在
  • 误用class参数:BeautifulSoup里指定class要用class_(下划线结尾),因为class是Python的关键字,不能直接当参数名
  • 选择器不正确:如果你的实际HTML里,这个div的class顺序、嵌套结构和你给出的片段不一样,也会导致找不到元素,要确认你的选择器和实际HTML匹配

内容的提问来源于stack exchange,提问作者ВАСЯ ВОРОН

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:22:17