FantasyData API是一个提供体育比赛数据(特别是梦幻体育相关数据)的接口服务,包括NFL、NBA、MLB、NHL等联赛的实时统计数据、赛程、球员信息等。
首先需要在FantasyData官网注册账号并获取API密钥(API Key),这是访问API的身份凭证。
install.packages(c("httr", "jsonlite", "dplyr"))
library(httr)
library(jsonlite)
# 设置API密钥和基础URL
api_key <- "your_api_key_here"
base_url <- "https://api.fantasydata.net/v3/nfl/scores/json/"
# 构建请求函数
get_fantasy_data <- function(endpoint) {
url <- paste0(base_url, endpoint)
response <- GET(url, add_headers("Ocp-Apim-Subscription-Key" = api_key))
if (status_code(response) == 200) {
content <- content(response, "text")
df <- fromJSON(content)
return(df)
} else {
stop(paste("API请求失败,状态码:", status_code(response)))
}
}
seasons <- get_fantasy_data("Seasons")
current_week <- get_fantasy_data("CurrentWeek")
teams <- get_fantasy_data("Teams")
players <- get_fantasy_data("Players")
games <- get_fantasy_data(paste0("ScoresByWeek/", 2023, "/", 10))
library(dplyr)
# 处理球员数据示例
processed_players <- players %>%
select(PlayerID, Name, Position, Team, ByeWeek) %>%
filter(Position %in% c("QB", "RB", "WR", "TE")) %>%
arrange(Team, Position)
# 查看前几行
head(processed_players)
Ocp-Apim-Subscription-Key
response <- GET(url, add_headers("Ocp-Apim-Subscription-Key" = api_key), timeout(30))
# 获取整个赛季的数据
full_season_data <- lapply(1:17, function(week) {
data <- get_fantasy_data(paste0("ScoresByWeek/", 2023, "/", week))
data$Week <- week # 添加周数标记
return(data)
}) %>% bind_rows()
library(memoise)
# 创建带缓存的函数
cached_get_fantasy_data <- memoise(get_fantasy_data)
# 第一次调用会实际请求API
week1 <- cached_get_fantasy_data(paste0("ScoresByWeek/", 2023, "/", 1))
# 第二次调用会返回缓存结果
week1_cached <- cached_get_fantasy_data(paste0("ScoresByWeek/", 2023, "/", 1))
api_key <- Sys.getenv("FANTASYDATA_API_KEY")
没有搜到相关的文章