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

使用read_html抓取指定URL球员数据表时默认获取隐藏表的问题咨询

问题描述

尝试抓取Fangraphs平台的球员排行榜数据,但当前R代码返回的是隐藏的球队积分榜,而非目标球员统计数据。

原错误代码

url <- "https://www.fangraphs.com/leaders-legacy.aspx?pos=all&stats=bat&lg=all&qual=1&type=c,7,5,14,11,21,22,54,58&season=2024&month=1000&season1=2024&ind=0&team=0&rost=0&age=0&filter=&players=0&startdate=2024-03-18&enddate=2024-03-24&v_cr=legacy"

l1 <- html_nodes(l1, 'table')

daily <- html_table(l1, fill = TRUE)[[7]]

tibble: 5 × 3X1    X2    X3l1 <- read_html(url)

当前错误输出


1 BAL CHW LAA
2 BOS CLE OAK
3 NYY DET SEA
4 TBR KCR TEX
5 TOR MIN HOU

期望输出示例

1 Mookie Betts LAD 6 9 2 1 0 0 0.3
2 Tyler Wade SDP 3 5 1 0 0 0 0.1


解决方案

1. 修正后的代码

library(rvest)
library(tibble)

url <- "https://www.fangraphs.com/leaders-legacy.aspx?pos=all&stats=bat&lg=all&qual=1&type=c,7,5,14,11,21,22,54,58&season=2024&month=1000&season1=2024&ind=0&team=0&rost=0&age=0&filter=&players=0&startdate=2024-03-18&enddate=2024-03-24&v_cr=legacy"

# 先读取目标页面的HTML内容
l1 <- read_html(url)

# 通过class精准定位球员排行榜表格
player_table <- html_nodes(l1, 'table.rgMasterTable')

# 将HTML表格转换为数据框
daily <- html_table(player_table, fill = TRUE)[[1]]

# 查看前几行结果
head(daily)

2. 关键修正点

  • 代码顺序修正:原代码先调用html_nodes再执行read_html,逻辑错误,需先读取页面再解析节点。
  • 精准表格定位:使用table.rgMasterTable作为CSS选择器,直接匹配球员统计数据所在的表格,避免误选隐藏的球队积分榜。
  • 索引调整:目标表格是匹配结果的第1个元素,无需再用[[7]]这种易出错的固定索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:47:41