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

使用R/Python抓取欧洲联赛梦幻篮球数据表格遇阻求解决方案

解决EuroLeague Fantasy数据表格抓取问题(rvest失效的替代方案)

问题原因

目标页面的表格数据是通过JavaScript动态渲染的,rvest::read_html()只能获取页面初始的静态HTML结构,此时表格内容还未加载,所以无法直接抓取到数据。

可行方案

方案1:直接调用数据API(高效推荐)

动态页面的数据通常来自后端API接口,通过浏览器开发者工具找到接口后,直接请求接口获取JSON数据:

  1. 打开目标页面,按F12进入开发者工具,切换到Network标签,刷新页面;
  2. 过滤XHR请求,找到返回球员/统计数据的接口(通常URL包含stats、players等关键词);
  3. 复制接口URL和必要的请求头(如User-Agent、Referer),用httr和jsonlite请求并解析数据。

示例代码:

library(httr)
library(jsonlite)

# 替换为你找到的实际API接口URL
api_url <- "https://example-api-url.com/stats"

# 设置请求头,模拟浏览器请求
request_headers <- add_headers(
  "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",
  "Referer" = "https://euroleaguefantasy.euroleaguebasketball.net/en/stats-fantasy-euroleague"
)

# 发送请求并解析JSON
response <- GET(api_url, request_headers)
raw_data <- fromJSON(content(response, "text"))

# 提取表格数据(根据实际JSON结构调整路径)
stats_df <- as.data.frame(raw_data$data$players)

方案2:用RSelenium模拟浏览器渲染

如果找不到API接口,可通过模拟浏览器加载页面,等待JS渲染完成后再抓取:

  1. 安装RSelenium包,并确保对应浏览器驱动(如ChromeDriver)已配置到系统PATH;
  2. 启动浏览器会话,加载目标页面并等待渲染;
  3. 获取渲染后的页面源码,再用rvest抓取表格。

示例代码:

library(RSelenium)
library(rvest)

# 启动Chrome会话(端口可自定义)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 加载目标页面
remDr$navigate("https://euroleaguefantasy.euroleaguebasketball.net/en/stats-fantasy-euroleague")

# 等待页面完全渲染(根据网络情况调整等待时间)
Sys.sleep(6)

# 获取渲染后的页面源码
rendered_html <- read_html(remDr$getPageSource()[[1]])

# 抓取表格数据(根据页面实际CSS选择器调整)
stats_table <- rendered_html %>% 
  html_element("table.stats-table") %>%  # 替换为实际表格的选择器
  html_table()

# 关闭会话
remDr$close()
driver$server$stop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:18