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

如何使用BeautifulSoup获取指定class属性的span标签文本内容

问题分析与解决办法

你的代码里有几个小问题导致无法正常输出目标文本,我来一步步帮你修正:

错误点拆解

  1. 选择器参数错误:你写的soup.find_all('span', attrs={'val'})是在寻找带有val属性的<span>标签(比如<span val="xxx">),但目标元素是**class为val**的span,应该用class_='val'或者attrs={'class': 'val'}来定位。
  2. 多余的嵌套查找:循环里的pr.find('span', attrs={'class':'val'})完全没必要——因为pr本身就是你通过find_all找到的class为val的span元素,它内部没有子span,所以这个查找会返回None,拼接字符串时自然会出错。
  3. 未提取文本内容:直接打印BeautifulSoup元素对象会输出标签本身,要获取标签内的文本,需要用.text或.get_text()方法。

正确代码示例

情况1:页面中只有一个目标元素(最常见)

# 假设你已经完成了HTML解析,得到soup对象
model_span = soup.find('span', class_='val')
if model_span:  # 先判断是否找到元素,避免空指针错误
    print('Name:' + model_span.text)

情况2:页面中有多个class为val的span元素

results = soup.find_all('span', class_='val')
for pr in results:
    print('Name:' + pr.text)  # 直接提取当前span的文本

补充说明

  • class_='val'是BeautifulSoup中指定class属性的专属写法(因为class是Python的关键字,不能直接用作参数名),和attrs={'class': 'val'}功能完全一致,选你习惯的写法就行。
  • .text会提取元素内部所有可见文本,对于你的场景(目标span直接包含文本)来说完全适用;如果需要更精细的文本控制(比如保留换行符),可以用.get_text(strip=True)来去除首尾空白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:47:31