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

如何使用BeautifulSoup从嵌套span的指定class div中提取纯文本

问题解决方案

你调用.text报错的核心原因是soup.find_all()返回的是匹配元素的列表(ResultSet对象),不能直接对整个列表调用.text属性,需要遍历每个匹配到的div元素后再操作文本提取。

正确实现代码

from bs4 import BeautifulSoup
import requests
import lxml

# 修正requests.get参数,第二个参数不需要传读取模式'r'
cbs_scores = requests.get('https://www.cbssports.com/college-football/scoreboard/').text
soup = BeautifulSoup(cbs_scores, 'lxml')

time_left_divs = soup.find_all('div', class_ = 'game-status emphasis')

for div in time_left_divs:
    # 提取完整纯文本,自动合并嵌套span标签内的内容
    full_text = div.get_text(strip=True)
    print(f"完整状态文本:{full_text}")

    # 拆分提取节次和剩余时间
    if 'Quarter' in full_text:
        quarter_info, time_info = full_text.split('Quarter', 1)
        quarter = f"{quarter_info.strip()} Quarter"
        remain_time = time_info.strip()
        print(f"节次:{quarter},剩余时间:{remain_time}")

方法说明

  • .get_text()是BeautifulSoup提取元素文本的标准方法,会自动递归提取内部所有子标签的文本并拼接,兼容性比.text更好,可通过参数自定义拼接规则和空白处理逻辑。
  • 如果需要避免依赖文本关键词拆分,也可以直接遍历div的子节点实现精准提取:
for div in time_left_divs:
    content_parts = []
    for node in div.contents:
        # 分别处理文本节点和标签节点
        if isinstance(node, str):
            content_parts.append(node.strip())
        else:
            content_parts.append(node.get_text(strip=True))
    full_text = ''.join(content_parts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:48:03