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

如何解决understatr包的‘json文本存在无效字符’错误?

针对understatr包抓取数据失效的解决方案

1. 先排查基础问题

  • 手动访问Understat官网,确认站点能正常加载(没有Cloudflare验证弹窗、页面报错等),如果网站本身有反爬或临时故障,包肯定没法正常请求。
  • 卸载并重装最新版的understatr:
    remove.packages("understatr")
    install.packages("understatr")
    # 若CRAN版本滞后,可装GitHub开发版(需先装devtools)
    # devtools::install_github("ewenme/understatr")
    

2. 解决"invalid char in json text"错误

这个错误一般是请求到的内容含特殊字符,干扰了jsonlite解析,试试以下方法:

  • 手动模拟请求流程,清理数据后再解析:
    library(curl)
    library(jsonlite)
    
    # 替换x为你的player_id
    player_url <- paste0("https://understat.com/player/", x)
    # 带浏览器UA请求,避免被反爬拦截
    h <- new_handle(useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
    req <- curl_fetch_memory(player_url, handle = h)
    
    # 提取页面中的JSON数据
    raw_content <- rawToChar(req$content)
    json_str <- sub(".*window.__NEXT_DATA__ = (.*?);</script>.*", "\\1", raw_content, perl = TRUE)
    # 清理换行、回车等特殊字符
    json_str <- gsub("\\r|\\n", "", json_str)
    
    # 解析并提取赛季数据
    data <- fromJSON(json_str)
    player_stats <- data$props$pageProps$playerData$seasons
    

3. 解决get_leagues_meta返回空tibble的问题

  • 同样用带UA的curl手动请求联赛数据:
    leagues_url <- "https://understat.com/leagues"
    req <- curl_fetch_memory(leagues_url, handle = h)
    raw_content <- rawToChar(req$content)
    json_str <- sub(".*window.__NEXT_DATA__ = (.*?);</script>.*", "\\1", raw_content, perl = TRUE)
    json_data <- fromJSON(json_str)
    leagues_meta <- json_data$props$pageProps$leaguesList
    
  • 重启R会话,只加载understatr、jsonlite、curl三个包,排除其他包的依赖冲突。

4. 测试干净环境

关闭所有R窗口,重新打开后只运行以下代码测试:

install.packages(c("understatr", "jsonlite", "curl"))
library(understatr)
library(jsonlite)
library(curl)

# 测试联赛元数据
get_leagues_meta()
# 测试球员数据(用已知有效的player_id,比如1437对应梅西)
get_player_seasons_stats(player_id = 1437)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:11:07