如何用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
相关产品推荐
相关产品推荐

