You need to enable JavaScript to run this app. R语言爬取FBref英超球员标准统计表 无法获取目标表问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

R语言爬取FBref英超球员标准统计表 无法获取目标表问题咨询

爬取结果异常的核心原因
  • FBref站点会拦截无常规浏览器请求标识的自动化脚本请求,xml2::read_html()默认的请求头会被识别为非真人流量,返回的页面往往缺失目标统计模块
  • 全量抓取页面所有<table>节点,会得到混合了侧边导航、广告占位、弹窗组件的表格列表,无法直接定位到目标的英超球员标准统计表
  • 目标表格采用双层嵌套表头结构,且每隔固定行数会插入重复的表头行做视觉分割,直接解析会出现列名错位、空值填充、数据混排的问题
  • URL中附带的#stats_standard::1属于前端页面滚动锚点,不参与服务端的页面返回逻辑,对DOM元素定位没有实际帮助,无法提升爬取准确率
全R环境自动爬取实现方案(无需手动下载CSV)

整个流程可完全在R环境内完成,不需要打开浏览器手动复制、下载文件:

  • 配置带模拟浏览器标识的请求头,绕过基础反爬校验
  • 通过CSS选择器精准定位目标表格节点,替代全量抓取所有table的逻辑
  • 清洗解析后的表格,剔除重复插入的分割表头行、空值占位

可直接运行的代码如下:

# 加载所需依赖
library(rvest)
library(xml2)
library(dplyr)
library(httr)

# 配置模拟Chrome浏览器的请求标识,匹配常规真人访问的请求特征
browser_header <- list(
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
)

# 读取目标页面,附加自定义请求头
page_content <- read_html(
  "https://fbref.com/en/comps/9/stats/Premier-League-Stats",
  httr_options = config(httpheader = browser_header)
)

# 精准定位ID为stats_standard的球员标准统计表
raw_table <- page_content %>% 
  html_element(css = "table#stats_standard") %>% 
  html_table(fill = TRUE)

# 清洗表格数据
clean_player_stats <- raw_table %>% 
  filter(
    Player != "Player", # 剔除每隔固定行插入的重复表头分割行
    !is.na(Player) # 剔除表尾的空值占位行
  )

说明:页面自带的可复制到剪贴板的表格专属链接,同样可以通过上述带请求头的逻辑直接请求获取,全程不需要手动触发浏览器交互。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 12:36:08