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

如何用rvest包提取CBS体育Fantasy排名多表格至R?

用rvest提取CBS体育PPR排名表格到R

1. 准备依赖包

先安装并加载所需工具包,rvest负责网页抓取,dplyr和purrr辅助数据处理:

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

# 加载包
library(rvest)
library(dplyr)
library(purrr)

2. 获取网页内容

抓取目标页面,添加用户代理模拟浏览器请求,避免被网站拦截:

url <- "https://www.cbssports.com/fantasy/football/rankings/ppr/top200/"
page <- read_html(url, 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")

3. 提取表格数据

提取全部4个位置的表格

页面里的4个位置表格(四分卫、跑卫、外接手、近端锋)共用TableBase-table类名,批量提取后可以给表格命名方便区分:

# 批量抓取所有表格
all_rank_tables <- page %>%
  html_elements(".TableBase-table") %>%
  map(html_table, header = TRUE)

# 给表格命名对应位置
names(all_rank_tables) <- c("Quarterbacks", "Running Backs", "Wide Receivers", "Tight Ends")

# 查看外接手表格示例
head(all_rank_tables$`Wide Receivers`)

提取单个指定表格

如果只需要某一个位置的表格,比如近端锋,用XPath精准定位(通过板块标题锁定后续表格):

# 提取近端锋表格
te_table <- page %>%
  html_element(xpath = "//h2[text()='Tight Ends']/following-sibling::div//table") %>%
  html_table(header = TRUE)

# 查看前5行数据
head(te_table, 5)

4. 数据清洗提示

  • 表格可能存在合并单元格,html_table()会自动填充对应值,但需要检查列名和数据格式是否符合预期。
  • 如果后续网站结构更新,打开浏览器开发者工具(F12)重新定位表格的CSS类或XPath路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:52:16