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

R抓取MLB薪资动态网页仅获100条数据,求助R Selenium方案

使用R Selenium抓取完整MLB投手薪资数据

Spotrac的薪资页面采用动态加载机制,初始仅渲染前100条数据,剩余内容需要滚动页面触发加载。用R Selenium可以模拟浏览器行为,加载全部308条数据,步骤如下:

1. 安装并加载依赖包

# 首次运行需安装包
install.packages(c("RSelenium", "tidyverse", "rvest"))

# 加载核心包
library(RSelenium)
library(tidyverse)
library(rvest)

2. 启动Selenium浏览器实例

以Chrome为例,确保本地Chrome版本与ChromeDriver匹配(RSelenium会自动尝试下载对应版本,若失败需手动下载并指定路径):

# 启动Chrome驱动与浏览器
driver <- rsDriver(browser = "chrome", chromever = "latest")
remDr <- driver[["client"]]

# 导航到目标页面
remDr$navigate("https://www.spotrac.com/mlb/rankings/salary/pitching/")

3. 模拟滚动加载全部数据

循环滚动页面到底部,直到页面高度不再变化(表示所有数据加载完成):

# 记录初始页面高度
last_height <- remDr$executeScript("return document.body.scrollHeight")[[1]]

while(TRUE) {
  # 滚动至页面底部
  remDr$executeScript("window.scrollTo(0, document.body.scrollHeight);")
  
  # 等待数据加载(网络慢可延长至5-10秒)
  Sys.sleep(3)
  
  # 获取新的页面高度
  new_height <- remDr$executeScript("return document.body.scrollHeight")[[1]]
  
  # 高度不变则终止循环
  if(new_height == last_height) break
  last_height <- new_height
}

4. 解析并提取完整数据

加载完成后,获取页面源码并用rvest解析(注意选择器需匹配当前页面结构,若网站更新需调整):

# 获取完整页面HTML
page_source <- remDr$getPageSource()[[1]]
salary_page <- read_html(page_source)

# 提取每一行的球员信息
player_salaries <- salary_page %>%
  html_elements(".rank-row") %>%
  map_df(function(row) {
    tibble(
      rank = row %>% html_element(".rank") %>% html_text(trim = TRUE),
      player = row %>% html_element(".player-name a") %>% html_text(trim = TRUE),
      team = row %>% html_element(".team-name a") %>% html_text(trim = TRUE),
      salary = row %>% html_element(".info") %>% html_text(trim = TRUE)
    )
  })

# 验证数据量(应返回308)
nrow(player_salaries)

5. 清理资源

抓取完成后关闭浏览器和驱动:

# 关闭浏览器
remDr$close()
# 停止Selenium服务器
driver$server$stop()

注意事项

  • 版本匹配:ChromeDriver版本必须与本地Chrome浏览器版本一致,否则会启动失败
  • 等待时间:根据网络状况调整Sys.sleep()的时长,避免因加载不充分导致数据缺失
  • 选择器更新:若网站HTML结构变更,需重新检查元素class或XPath,调整抓取逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:33:17