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

Python网页爬虫导出CSV后无法找到生成文件 求解决方案

爬虫CSV无法保存问题修复方案

你的代码里存在语法、路径、逻辑三类错误,逐一修复即可正常生成文件:

现存错误点

  • 路径参数错误:to_csv传入的r'C\Users\19794\OneDrive\Desktop\Coding Projects'存在两个问题:C盘盘符后缺少冒号(正确应为C:),且路径指向文件夹而非具体文件,pandas无法将数据写入文件夹路径,必须指定完整的.csv文件名。
  • 语法错误:
    1. BeautifulSoup标签对象无findall方法,正确方法名为find_all,缺少下划线会直接触发属性报错
    2. 变量名不能用.连接,temp.df属于非法变量名,应改为下划线命名temp_df
    3. 代码缩进混乱,Python强制缩进对齐,乱缩进会直接触发语法错误
    4. 未初始化final_df空DataFrame,第一次执行concat时会触发变量不存在报错
    5. temp.df = columns行未定义columns变量,且会直接覆盖之前创建的单球员数据DataFrame,逻辑完全错误
  • 逻辑错误:
    1. 循环语句for players in players会覆盖外层存储所有球员行的列表变量,虽然不影响运行但属于不规范写法
    2. to_csv写在for循环内部,每遍历一条球员数据就会覆盖写入一次文件,效率极低,循环中途报错会导致文件损坏
    3. 未给requests请求加请求头,很容易被ESPN反爬拦截返回403错误,导致后续解析不到任何数据

修正后完整代码

import pandas as pd
import re
from bs4 import BeautifulSoup
import requests

# 加请求头绕过基础反爬
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
url = 'https://www.espn.com/mlb/history/leaders/_/breakdown/season/year/2022'
page = requests.get(url, headers=headers)
# 先判断请求是否成功
page.raise_for_status()
soup = BeautifulSoup(page.text, 'html.parser')

# 提前初始化空的总数据集
final_df = pd.DataFrame()
# 修正缩进,修改变量名避免覆盖
players = soup.find_all('tr', attrs={'class': re.compile('row-player-10-')})
for player in players:
    # 修正find_all方法名
    stats = [stat.get_text() for stat in player.find_all('td')]
    # 修正变量名,去掉错误的columns赋值
    temp_df = pd.DataFrame(stats).transpose()
    # 拼接数据
    final_df = pd.concat([final_df, temp_df], ignore_index=True)
    print(f"已爬取{len(final_df)}条球员数据")

# 循环全部结束后再保存文件,修正路径:补全C盘冒号,指定具体csv文件名
save_path = r'C:\Users\19794\OneDrive\Desktop\Coding Projects\mlb_2022_stats.csv'
final_df.to_csv(save_path, index=False, sep=',', encoding='utf-8')
print(f"文件已成功保存到:{save_path}")

排查注意事项

  • 运行前手动打开资源管理器确认C:\Users\19794\OneDrive\Desktop\Coding Projects文件夹真实存在,且你当前Windows账号对该文件夹有写入权限,OneDrive同步文件夹偶尔会出现权限锁定问题
  • 如果运行后还是找不到文件,先把保存路径改成相对路径./mlb_2022_stats.csv,文件会生成在你当前运行的.py脚本同目录下,先确认爬取逻辑正常再调整绝对路径
  • 运行时注意看终端打印信息,如果出现报错直接根据报错提示定位问题即可,代码里加了page.raise_for_status(),请求被拦截时会直接抛出HTTP错误方便排查

内容的提问来源于stack exchange,提问作者mr.v

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:42:17