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

如何用R爬取FBRef球员数据?URL随机ID生成难题求解

解决FBRef球员比赛日志URL中随机ID的爬取方案

方法一:通过搜索接口动态获取球员ID

FBRef的搜索功能可以返回匹配球员的主页链接,从中提取随机ID后再拼接比赛日志URL,这是处理单/少量球员的直接方式:

library(rvest)
library(stringr)
library(glue)

# 定义函数:根据球员名获取FBRef唯一ID
get_fbref_player_id <- function(player_name) {
  # 构造搜索请求URL
  search_url <- glue("https://fbref.com/en/search/search.fcgi?search={URLencode(player_name)}")
  # 读取搜索页面
  search_page <- read_html(search_url)
  
  # 提取第一个匹配球员的主页链接(若有同名需额外筛选,比如俱乐部)
  player_link <- search_page %>% 
    html_elements(".search-item-url a") %>% 
    html_attr("href") %>% 
    .[1]
  
  # 从链接中提取8位随机ID
  player_id <- str_extract(player_link, "/players/([a-f0-9]{8})/") %>% 
    str_remove_all("/players/|/")
  
  return(player_id)
}

# 测试获取目标球员ID
rashford_id <- get_fbref_player_id("Marcus Rashford")
haaland_id <- get_fbref_player_id("Erling Haaland")

# 构造2022-2023赛季比赛日志URL
rashford_logs_url <- glue("https://fbref.com/en/players/{rashford_id}/matchlogs/2022-2023")
haaland_logs_url <- glue("https://fbref.com/en/players/{haaland_id}/matchlogs/2022-2023")

方法二:批量爬取索引页建立ID映射表

如果需要处理大量球员,建议先爬取FBRef的球员索引页面(比如联赛/国家队的球员列表),提前建立「球员名-ID」映射表,后续直接查表生成URL:

# 示例:爬取英超2022-2023赛季球员索引
prem_index_url <- "https://fbref.com/en/comps/9/2022-2023/2022-2023-Premier-League-Stats"
prem_page <- read_html(prem_index_url)

# 提取所有球员的链接和姓名
player_data <- prem_page %>% 
  html_elements("#stats_standard tr") %>% 
  html_elements("td[data-stat='player'] a") %>% 
  tibble(
    player_name = html_text(.),
    player_link = html_attr("href")
  ) %>% 
  mutate(player_id = str_extract(player_link, "/players/([a-f0-9]{8})/") %>% str_remove_all("/players/|/"))

# 后续通过姓名匹配ID
target_players <- c("Marcus Rashford", "Erling Haaland")
target_ids <- player_data %>% 
  filter(player_name %in% target_players) %>% 
  pull(player_id)

注意事项

  • 每次请求后添加Sys.sleep(2)延迟,避免触发网站反爬机制
  • 若搜索结果出现同名球员,需在函数中加入俱乐部、国籍等筛选条件(比如从搜索结果的.search-item-details中提取信息判断)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:41:18