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

在R中将抓取的JSON格式字符串转为DataFrame:Winamax赛事数据爬取问题

解决Winamax动态数据解析与DataFrame转换问题

步骤1:补充依赖包

首先需要加载jsonlite用于JSON解析,tidyr处理嵌套数据:

library(dplyr)
library(rvest)
library(jsonlite)
library(tidyr)

步骤2:正确提取并解析JSON数据

你之前的字符串替换逻辑有误,应保留完整JSON结构,仅移除JavaScript变量声明和结尾分号:

# 清理脚本文本,提取纯JSON内容
ext_clean <- ext %>%
  gsub("^var PRELOADED_STATE = ", "", .) %>%  # 移除开头的变量声明
  gsub(";$", "", .)  # 移除结尾的分号

# 解析JSON为R列表
preloaded_state <- fromJSON(ext_clean)

步骤3:提取目标数据并转换为DataFrame

Winamax预加载数据中,赛事基本信息(球队名称)和赔率分别存储在eventCards和markets节点下,提取并合并这两部分数据:

# 提取赛事信息(球队名称)
events_data <- preloaded_state$eventCards$entities %>%
  as.data.frame() %>%
  select(event_id = id, competitor1Name, competitor2Name)

# 提取赔率数据并展开嵌套结构
odds_data <- preloaded_state$markets$entities %>%
  as.data.frame() %>%
  select(event_id = eventId, outcomes) %>%
  unnest(outcomes) %>%  # 展开嵌套的赔率项
  select(event_id, odds_type = name, odds = decimalOdds)

# 合并赛事与赔率数据
final_df <- events_data %>%
  left_join(odds_data, by = "event_id")

说明

  • 若网站预加载数据结构变化,可通过str(preloaded_state)查看完整列表结构,调整提取路径。
  • 最终的final_df会包含每场赛事的两支球队名称,以及对应的各类赔率(如胜/平/负)。

内容的提问来源于stack exchange,提问作者M.O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:21:01