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

使用Beautiful Soup提取Udemy课程价格时遇NoneType错误的解决方法

Udemy课程价格追踪器:解决BeautifulSoup提取价格的NoneType错误

你遇到的错误核心原因有两个:

  1. 代码里指定的usd-sr-only类名和实际页面的ud-sr-only不符
  2. 即便找对类名,这个标签对应的是Current price提示文本,并非你需要的价格数值

从你提供的HTML结构来看,价格数值在带data-purpose='course-price-text'属性的父div下的第二个span标签中,该span没有专属class。

正确定位方式

通过父元素的data-purpose属性精准定位容器,再从中提取价格:

  • 先找到包含价格的父容器div
  • 从容器内筛选出价格对应的span标签

修改后的代码片段

将原代码中价格提取的部分替换为以下内容:

# 定位价格所在的父容器
price_container = soup.find("div", attrs={"data-purpose": "course-price-text"})
if price_container:
    # 获取容器内所有span标签,取第二个即为价格
    price_spans = price_container.find_all("span")
    price_text = price_spans[1].get_text()
    # 去除$符号并转换为浮点数
    price_as_float = float(price_text.replace("$", ""))
    print(price_as_float)
else:
    print("无法定位价格元素,请检查页面结构或请求头配置")

额外注意点

  • 增加price_container的存在判断,能避免再次触发NoneType错误
  • 如果后续仍提取失败,需留意Udemy是否启用了反爬机制(比如需要登录验证或动态渲染页面)

内容的提问来源于stack exchange,提问作者astral monké

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:04:55