You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Python Selenium爬取的CSV添加单列固定值?

给Fangraphs导出的CSV添加固定值列的解决方案

嘿,这个需求其实很好实现!不用在网页上折腾额外操作,等Selenium把CSV下载到本地后,用pandas就能轻松给所有行加上固定值的新列,给你一步步拆解:

核心思路

先通过Selenium完成Fangraphs的CSV导出流程,然后读取本地的CSV文件,添加指定固定值的列,最后保存修改后的文件——这种方式比在网页DOM里操作要简单可靠得多。

完整代码示例

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
import pandas as pd
import time
import os

# 1. 配置Firefox浏览器,设置指定下载目录(避免手动找文件的麻烦)
download_dir = "/path/to/your/local/folder"  # 替换成你的本地文件夹路径
options = Options()
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.dir", download_dir)
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")

# 启动浏览器并访问目标Fangraphs页面
driver = webdriver.Firefox(options=options)
driver.get("https://www.fangraphs.com/your-target-page")  # 替换成实际目标URL

# 2. 触发"Export Data"按钮下载CSV
try:
    export_button = driver.find_element(By.LINK_TEXT, "Export Data")
    export_button.click()
    time.sleep(6)  # 等待下载完成,可根据文件大小调整时长
finally:
    driver.quit()

# 3. 自动找到下载目录里最新的CSV文件(避免文件名不固定的问题)
csv_files = [f for f in os.listdir(download_dir) if f.endswith(".csv")]
latest_csv = max(csv_files, key=lambda x: os.path.getctime(os.path.join(download_dir, x)))
csv_file_path = os.path.join(download_dir, latest_csv)

# 4. 读取CSV并添加固定值列
df = pd.read_csv(csv_file_path)

# 自定义固定值和新列名,比如所有行都填"2024常规赛"
fixed_value = "2024常规赛"
df["赛季标记"] = fixed_value  # "赛季标记"是新列的名称,可按需修改

# 5. 保存修改后的CSV
df.to_csv(os.path.join(download_dir, "fangraphs_data_with_fixed_col.csv"), index=False)

关键细节说明

  • 指定下载目录:通过Firefox偏好设置,让文件直接下载到指定文件夹,同时设置CSV类型自动保存,跳过弹窗确认步骤。
  • 自动找最新CSV:用文件修改时间筛选最新下载的文件,避免因Fangraphs导出的文件名不固定导致找不到文件的问题。
  • 添加固定值列:pandas的df["新列名"] = 固定值会自动给每一行填充这个值,高效且不易出错。
  • 无索引保存:用index=False避免保存时自动生成多余的索引列,保持CSV格式和原文件一致。

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

火山引擎 最新活动