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

如何用Python抓取Statcast动态加载的Park Factors表格?

解决Statcast Park Factors表格抓取问题

问题根源

原代码通过By.TAG_NAME抓取页面第一个表格,而目标包含wOBACon、BACON等字段的Park Factors表格并非页面首个表格;同时原等待条件仅判断是否存在任意表格,未等待目标表格完成AJAX加载,导致定位失败或索引越界。

修正后的Selenium抓取代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
from io import StringIO
import time

# 目标Park Factors页面URL
url = "https://baseballsavant.mlb.com/leaderboard/statcast-park-factors?type=year&year=2024&batSide=L&stat=index_wOBA&condition=All&rolling="

# 初始化WebDriver(以Firefox为例,Chrome需替换为webdriver.Chrome())
driver = webdriver.Firefox()
driver.get(url)

try:
    # 滚动到页面底部,触发动态数据加载(部分表格内容需滚动后渲染)
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)
    
    # 等待目标表格(ID为parkFactors)可见,延长超时时间确保AJAX加载完成
    park_table = WebDriverWait(driver, 15).until(
        EC.visibility_of_element_located((By.ID, "parkFactors"))
    )
    
    # 提取表格HTML并解析为DataFrame
    table_html = park_table.get_attribute("outerHTML")
    df = pd.read_html(StringIO(table_html))[0]
    
    # 输出结果
    print(df)
finally:
    # 确保浏览器关闭
    driver.quit()

本地HTML文件测试方案

如果使用本地保存的HTML副本练习,可直接通过pandas遍历所有表格,定位目标表格:

import pandas as pd

# 读取本地HTML中的所有表格
tables = pd.read_html("本地文件路径.html")

# 遍历表格列表,通过列名识别目标表格
for idx, table in enumerate(tables):
    columns = table.columns.tolist()
    # 检查是否包含目标字段(如wOBACon、BACON)
    if "wOBACon" in columns and "BACON" in columns:
        target_df = table
        print(f"找到目标表格,索引为{idx}")
        print(target_df)
        break

额外排查点

  • 若By.ID="parkFactors"仍定位失败:检查浏览器开发者工具,确认表格是否嵌套在iframe内。若是,需先切换iframe:
    # 切换到包含表格的iframe(需根据实际iframe元素调整选择器)
    iframe = driver.find_element(By.TAG_NAME, "iframe")
    driver.switch_to.frame(iframe)
    
  • 若表格数据不完整:可增加滚动次数或延长等待时间,确保所有动态加载的行渲染完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:30:22