使用R的rvest包爬取NRL赛程JSON数据报错,求解决方案
问题原因与解决办法
- 错误根源:你定位的
div.u-spacing-mt-24.pre-quench节点在当前页面不存在,或是其q-data属性值为空/非合法JSON结构,导致jsonlite::fromJSON解析时抛出lexical error。网站不同页面的渲染逻辑存在差异,之前的爬取方法无法通用。 - 替代方案:直接从页面的赛程卡片中提取对阵队伍,无需依赖
q-data的JSON数据,代码示例如下:
library(rvest) library(dplyr) url <- "https://www.nrl.com/draw/?competition=111&round=1&season=2024" page <- read_html(url) # 提取所有对阵队伍对 match_ups <- page %>% html_nodes("div.draw-card__team") %>% html_text2() %>% trimws() %>% matrix(ncol = 2, byrow = TRUE) %>% as.data.frame(stringsAsFactors = FALSE) %>% setNames(c("Home Team", "Away Team")) print(match_ups)
- 代码说明:
- 用
html_nodes("div.draw-card__team")定位每个赛程卡片里的队伍元素 html_text2()提取并清理文本,trimws()去除多余空格- 将结果按每2个一组转为矩阵,再转成数据框,得到对阵的主客队
- 用
内容的提问来源于stack exchange,提问作者gimmethedata123
相关产品推荐
相关产品推荐

