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

使用rvest爬取NRL球员数据:CSS选择器与属性匹配问题

解决NRL球员数据爬取的页面结构变化问题

第一步:定位数据存储位置

页面结构更新后,得自己用浏览器开发者工具(Chrome/Firefox按F12)找数据位置:

  • 打开目标页面,切换到Elements面板,用左上角的元素选择工具点击球员统计区域,定位包裹数据的父元素
  • 检查该元素的所有属性,找包含JSON格式文本的属性(比如data-*类属性,或类似原q-data的自定义属性)
  • 如果Elements面板里找不到直接的JSON数据,切换到Network面板,刷新页面后筛选XHR/Fetch请求,找返回球员数据的API接口(URL通常含stats、player这类关键词)

第二步:调整R代码的三种方案

方案1:更新CSS选择器和属性(数据仍在页面元素中)

假设通过开发者工具找到数据在div.stats-wrapper元素的data-match-stats属性里,代码修改如下:

library(rvest)
library(jsonlite)

page <- read_html("https://www.foxsports.com.au/nrl/nrl-premiership/match-centre/NRL20220101/playerstats")
contentnodes <- page %>% 
  html_nodes("div.stats-wrapper") %>%  # 替换为你找到的新选择器
  html_attr("data-match-stats") %>%     # 替换为对应属性名
  jsonlite::fromJSON()

方案2:直接调用API(更稳定,推荐)

如果在Network面板找到数据接口(比如https://api.foxsports.com.au/nrl/match/NRL20220101/player-stats),直接用httr请求:

library(httr)
library(jsonlite)

api_url <- "https://api.foxsports.com.au/nrl/match/NRL20220101/player-stats"  # 替换为实际API地址
response <- GET(api_url)
player_stats <- fromJSON(content(response, "text"))

方案3:处理动态渲染页面(数据由JS加载)

如果read_html抓不到内容,说明页面是JS动态渲染的,用RSelenium模拟浏览器加载:

library(RSelenium)
library(rvest)
library(jsonlite)

# 启动Chrome浏览器(需提前安装对应驱动)
driver <- rsDriver(browser = "chrome")
remDr <- driver[["client"]]
remDr$navigate("https://www.foxsports.com.au/nrl/nrl-premiership/match-centre/NRL20220101/playerstats")

# 获取页面源码
page_source <- remDr$getPageSource()[[1]]
page <- read_html(page_source)

# 后续同方案1,解析数据
contentnodes <- page %>% 
  html_nodes("你的新选择器") %>% 
  html_attr("对应的属性名") %>% 
  fromJSON()

# 关闭浏览器
remDr$close()
driver$server$stop()

额外提示

部分网站有反爬机制,请求API时可添加请求头模拟真实浏览器,比如:

headers <- add_headers(
  "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
)
response <- GET(api_url, headers)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:30:44