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

简化BeautifulSoup表格数据提取:指定行数值提取难题

表格数据提取优化:获取Total A/B的纯数值

核心解决思路

  • 先单独提取tfoot下的所有表格行,避免遍历逻辑混淆
  • 用get_text(strip=True)自动剥离<b>标签和多余空白(包括\xa0这类无效字符)
  • 精准筛选目标行,一次性处理Total A和Total B的数据

优化后代码

from bs4 import BeautifulSoup

# 假设你已完成页面内容的获取与解析
# soup = BeautifulSoup(你的页面内容, 'html.parser')

# 提取tfoot下的所有表格行
tfoot_rows = soup.find('tfoot').find_all('tr')

for row in tfoot_rows:
    # 获取当前行所有单元格的纯文本,自动去标签、去首尾空白
    cell_texts = [cell.get_text(strip=True) for cell in row.find_all('td')]
    
    # 跳过空行和首行无效数据
    if not cell_texts or cell_texts[0] == 'Subset':
        continue
    
    # 只处理Total A和Total B的行
    if cell_texts[0] in ('Total A', 'Total B'):
        # 提取数值部分(去掉最后一个空单元格,取第2到倒数第1个元素)
        numeric_values = cell_texts[1:-1]
        print(f"{cell_texts[0]} 的数值: {numeric_values}")

关键细节说明

  1. 修正遍历对象:原代码里的变量td实际对应表格行(tr),现在直接用tfoot_rows存储所有行,逻辑更直观
  2. 纯文本提取:get_text(strip=True)是BeautifulSoup提取文本的标准方法,无论单元格内是否有<b>标签,都能拿到干净的纯文本,还能自动过滤\xa0这类空白字符
  3. 高效筛选:通过判断行标题是否为Total A/Total B,一次性处理两行数据,无需重复写判断逻辑

预期输出

Total A 的数值: ['213', '96', '137']
Total B 的数值: ['224', '92', '152']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:43:00