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

网页爬取数据转CSV后Excel仅显列标题无数据的解决方法

问题

使用以下Python爬虫代码爬取https://www.dsebd.org/top_20_share.php的数据并保存为CSV文件后,用Excel打开仅能看到列标题,无法显示数据行:

url ="https://www.dsebd.org/top_20_share.php"
r = requests.get(url) 
soup = BeautifulSoup(r.text,"lxml")
table = soup.find("table", class_="table table-bordered background-white shares-table")
top = table.find_all("th")
header = []
for x in top:
    ele = x.text
    header.append(ele)
    
df = pd.DataFrame(columns= header)
print(df)

row1 = table.find_all("tr")
row2 = []
for r1 in row1[1:]:
    ftd = r1.find_all("td")[1].find("a", class_="ab1").text.strip()
    data = r1.find_all("td")[1:]
    r2 = [ele.text for ele in data]
    r2.insert(0, ftd)
    l = len(df)
    df.loc[l] = r2
print(df)

df.to_csv("top_20_share_value_22.csv")
解决方案

1. 修复爬虫代码逻辑

核心问题是数据列数与表头列数不匹配,导致Pandas未写入数据行:

  • 代码中data = r1.find_all("td")[1:]已经包含了股票名称所在的第二个td,之后又执行r2.insert(0, ftd)重复插入了一次股票名称,使得数据列数比表头多1列,Pandas无法匹配,最终只写入表头。

修改后的代码片段:

for r1 in row1[1:]:
    data = r1.find_all("td")[1:]
    r2 = [ele.text.strip() for ele in data]  # 统一清理单元格空白字符
    df.loc[len(df)] = r2

重新运行代码生成新的CSV文件。

2. 用Excel正确导入CSV

如果确认CSV文件已有数据但直接打开看不到,改用导入方式:

  • 打开Excel,切换到「数据」选项卡
  • 点击「自文本/CSV」,选择目标CSV文件
  • 在导入界面确认分隔符为逗号,预览数据无误后点击「加载」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:03:17