使用R/Python抓取欧洲联赛梦幻篮球数据表格遇阻求解决方案
解决EuroLeague Fantasy数据表格抓取问题(rvest失效的替代方案)
问题原因
目标页面的表格数据是通过JavaScript动态渲染的,rvest::read_html()只能获取页面初始的静态HTML结构,此时表格内容还未加载,所以无法直接抓取到数据。
可行方案
方案1:直接调用数据API(高效推荐)
动态页面的数据通常来自后端API接口,通过浏览器开发者工具找到接口后,直接请求接口获取JSON数据:
- 打开目标页面,按F12进入开发者工具,切换到
Network标签,刷新页面; - 过滤
XHR请求,找到返回球员/统计数据的接口(通常URL包含stats、players等关键词); - 复制接口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渲染完成后再抓取:
- 安装
RSelenium包,并确保对应浏览器驱动(如ChromeDriver)已配置到系统PATH; - 启动浏览器会话,加载目标页面并等待渲染;
- 获取渲染后的页面源码,再用
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
相关产品推荐
相关产品推荐

