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

使用rvest爬取Covers.com凯尔特人赛程数据时节点定位失败求助

解决rvest爬取Covers.com凯尔特人赛季数据的节点定位问题

问题核心

Covers.com的页面内容多为动态加载,直接用read_html()获取的静态HTML里并不包含你要的赛程/结果表格,所以无论尝试哪个ID都会返回xml_missing错误。

可行解决方案

1. 用RSelenium获取动态渲染页面

模拟浏览器加载完整页面,获取包含动态内容的源码:

library(RSelenium)
library(rvest)

# 启动Chrome驱动(需提前安装对应版本的ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 访问目标页面
url <- "https://www.covers.com/sport/basketball/nba/teams/main/boston-celtics/2022-2023"
remDr$navigate(url)

# 等待页面完全加载(可根据网络情况调整等待时间)
Sys.sleep(5)

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

# 关闭驱动
remDr$close()
driver$server$stop()

2. 定位正确的表格节点

在动态渲染后的页面中,赛程表格的有效选择器为table[data-testid="schedule-table"],提取表格代码如下:

# 提取赛季赛程表格
schedule_table <- html %>% 
  html_element('table[data-testid="schedule-table"]') %>% 
  html_table(header = TRUE)

# 查看数据示例
head(schedule_table)

3. 高效备选:直接调用API接口

打开浏览器开发者工具的「网络」标签,刷新页面后筛选XHR/fetch请求,可找到返回赛程数据的API接口(类似/api/teams/boston-celtics/schedule/2022-2023),直接请求接口获取JSON数据,解析后即可得到结构化内容,无需处理HTML节点。

注意事项

  • 频繁爬取可能触发反爬机制,建议添加请求间隔,避免短时间内多次请求。
  • 网站节点或API可能随时变更,需定期验证目标元素或接口有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:01:03