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

如何将爬取的连续表格文本转换为指定列的Pandas DataFrame

如何将爬取的连续单元格文本转换为指定列的Pandas DataFrame?

我来一步步帮你解决这个问题——核心思路是先把爬取到的零散单元格文本按行分组,再用Pandas组装成结构化的DataFrame,具体分两种场景处理:

场景1:还在爬取阶段,直接收集数据

你现在的代码是直接打印每个单元格文本,我们先改成把这些文本按完整行来收集,确保每组数据和columns的长度匹配:

# 导入依赖库
import pandas as pd
from bs4 import BeautifulSoup  # 假设你用BeautifulSoup做网页解析

# 你的预设列名列表
columns = ['G','Date', 'Age','Team',"at","Opp",'Score','Starter','MP','FG','FGA','FG%','3P','3PA',"3P%", 'FT','FTA','FT%','ORB','DRB','TRB','AST','STL','BLK','TOV','PF','PTS',"GmSC","+/-"]

# 初始化存储完整行数据的列表
data_rows = []

# 修改爬取逻辑,按行收集有效数据
for row in stat_table.find_all("tr"):
    # 提取当前行所有td的文本,同时清理多余空格/换行
    cell_texts = [cell.text.strip() for cell in row.find_all('td')]
    # 只保留和列数完全匹配的行(过滤空行、不完整数据行)
    if len(cell_texts) == len(columns):
        data_rows.append(cell_texts)

# 转换为DataFrame
df = pd.DataFrame(data_rows, columns=columns)

执行完这段代码后,df就是你想要的结构化数据了。

场景2:已将打印内容保存为文本文件

如果之前已经把所有单元格文本输出成了txt文件(每行一个值),可以通过以下方式读取并分组:

import pandas as pd

columns = ['G','Date', 'Age','Team',"at","Opp",'Score','Starter','MP','FG','FGA','FG%','3P','3PA',"3P%", 'FT','FTA','FT%','ORB','DRB','TRB','AST','STL','BLK','TOV','PF','PTS',"GmSC","+/-"]

# 读取文本文件,过滤空行
with open('你的输出文件.txt', 'r', encoding='utf-8') as f:
    all_texts = [line.strip() for line in f if line.strip()]

# 按列数分组,每29个值对应一行完整数据
grouped_data = [all_texts[i:i+len(columns)] for i in range(0, len(all_texts), len(columns))]

# 生成DataFrame
df = pd.DataFrame(grouped_data, columns=columns)

几个关键注意点

  • 必须保证每行的单元格数量和columns长度完全一致,否则分组或创建DataFrame时会报错;
  • 用strip()处理文本是为了清除单元格里的多余空格、换行符,避免数据脏污;
  • 如果表格的表头用了<th>标签,find_all('td')不会抓取到表头,无需额外过滤;如果表头用了<td>,记得手动跳过第一行(比如data_rows = data_rows[1:])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:09:22