使用来自Python的R学习Json抓取

使用来自Python的R学习Json抓取,python,r,json,rstudio,Python,R,Json,Rstudio,我将从python迁移到R,并尝试使用我的python技能熟悉使用R刮取json。我在查看和刮取我想要的内容时遇到一些问题。我很确定我有For循环,但我不确定如何选择键并返回它们的内容。我读过一些文件,但作为一个新手,有点难以理解。为此,我使用python创建了一个快速脚本,以显示我在Rstudio中尝试执行的操作 import requests from pprint import pprint start = '2018-10-03' end = '2018-10-10' req = r

我将从python迁移到R,并尝试使用我的python技能熟悉使用R刮取json。我在查看和刮取我想要的内容时遇到一些问题。我很确定我有For循环,但我不确定如何选择键并返回它们的内容。我读过一些文件,但作为一个新手,有点难以理解。为此,我使用python创建了一个快速脚本,以显示我在Rstudio中尝试执行的操作

import requests
from pprint import pprint

start = '2018-10-03'
end = '2018-10-10'

req = requests.get('https://statsapi.web.nhl.com/api/v1/schedule?startDate=' + str(start) + '&endDate=' + str(end) + '&hydrate=team(leaders(categories=[points,goals,assists],gameTypes=[P])),linescore,broadcasts(all),tickets,game(content(media(epg),highlights(scoreboard)),seriesSummary),radioBroadcasts,metadata,seriesSummary(series),decisions,scoringplays&leaderCategories=&site=en_nhl&teamId=&gameType=&timecode=') 
data = req.json()['dates']

for info in data:
    date = info['date']
    games = info['games']
    for game in games:
        gamePk = game['gamePk']

        print(date, gamePk)
下面是我开始的内容,但我在理解在哪里可以查看json而不是锁定R的打印数据时遇到了一个问题。我希望能够边走边查看字典和密钥。另一个问题是如何将键值添加到“vector”或df?中并写出它们。我熟悉导出到文件,但对如何将值添加到df很好奇。那会是束缚吗?或者我不必那么做

library(jsonlite)

start <- as.Date(c('2018-10-03'))
end <- as.Date(c('2019-04-15')) 


url <- paste0('https://statsapi.web.nhl.com/api/v1/schedule?startDate=', start,'&endDate=', end,'&hydrate=team(leaders(categories=[points,goals,assists],gameTypes=[P])),linescore,broadcasts(all),tickets,game(content(media(epg),highlights(scoreboard)),seriesSummary),radioBroadcasts,metadata,seriesSummary(series),decisions,scoringplays&leaderCategories=&site=en_nhl&teamId=&gameType=&timecode=')

data <- fromJSON(url)
library(jsonlite)

开始尝试
str(数据)
查看所有内容的结构。您可以使用
data$dates$games
之类的工具访问数据组件。如果您想查看lubridate软件包,R日期类型可能会很麻烦,因为它们与其他语言截然不同。还要记住,向量从索引1开始。
fromJSON
返回一个普通(如果通常非常难看)列表。您可以通过子集拉出单个元素;要获得更多信息,您需要熟悉
lappy
和朋友(或)。这是一个有趣的(但年轻的)自动化提取步骤的项目。另外,它提供了一种更好(而且功能更强大)的请求语法,您可以将查询作为参数输入;只要调用
View
查看响应即可。它甚至可以为您生成子集代码;它在嵌套的数据帧上走得太远了,所以
response%map('games')%%>%modify\u depth(2,discard,is.list)%%>%map\u dfr(dplyr::bind\u rows)
。要得到剩下的将是更多的工作。
library(jsonlite)

start <- as.Date(c('2018-10-03'))
end <- as.Date(c('2018-10-04')) 

url <- paste0('https://statsapi.web.nhl.com/api/v1/schedule?startDate=', start,'&endDate=', end,'&hydrate=team(leaders(categories=[points,goals,assists],gameTypes=[P])),linescore,broadcasts(all),tickets,game(content(media(epg),highlights(scoreboard)),seriesSummary),radioBroadcasts,metadata,seriesSummary(series),decisions,scoringplays&leaderCategories=&site=en_nhl&teamId=&gameType=&timecode=')

data <- fromJSON(url)

date <- data$dates$date
game_id <- data$dates$games

game <- NULL

for (ids in game_id) {
  pk <- ids$gamePk
  game <- rbind(game, pk)
}