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

如何用BeautifulSoup筛选含/不含指定类及属性的表格元素并导出Excel

实现方案

你可以先锁定目标表格再逐层过滤元素,完整实现逻辑如下:

依赖库安装

提前安装需要的第三方库:

pip install beautifulsoup4 pandas openpyxl

完整代码示例

from bs4 import BeautifulSoup
import pandas as pd

# 这里替换成你实际获取到的网页源码文本,或者用requests.get(url).text获取
html_content = """
你获取的网页HTML内容
"""

# 1. 解析HTML,锁定目标table
soup = BeautifulSoup(html_content, 'html.parser')
target_table = soup.find('table', id='need')

# 2. 过滤有效行:排除class="txt"的行,保留符合基础属性的tr
valid_trs = target_table.find_all(
    'tr',
    attrs={'height': '30', 'align': 'center'},
    class_=lambda c: c != 'txt' # 过滤class为txt的行
)

# 3. 逐行提取有效单元格内容,排除type="wholeLast"的td
result_data = []
for tr in valid_trs:
    # 过滤不需要的td,type属性不存在时也保留
    valid_tds = tr.find_all(
        'td',
        attrs={'type': lambda t: t is None or t != 'wholeLast'}
    )
    # 提取单元格文本,去除首尾空白
    row = [td.get_text(strip=True) for td in valid_tds]
    result_data.append(row)

# 4. 保存到Excel
df = pd.DataFrame(result_data)
# 如果有表头可以手动指定列名,例如 df.columns = ['列名1', '列名2', '列名3']
df.to_excel('提取结果.xlsx', index=False)

注意事项

  • 如果你需要保留原表格的表头,可单独提取第一行的内容作为DataFrame的列名
  • 若页面是动态渲染的,需要先用selenium等工具拿到渲染后的完整HTML再解析
  • 处理大批量数据时可以用openpyxl直接操作Excel文件,内存占用更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:01