python - 使用来自 Python 的 R 学习 Json 抓取
问题描述
我正在从 python 迁移到 R,并且正在尝试使用我的 python 技能来熟悉使用 R 抓取 json。我在查看和抓取我想要的内容时遇到了一些问题。我很确定我已经关闭了 For 循环,但我不确定如何选择键并返回它们的内容。我已经阅读了一些文档,但是对于 R 来说是新手,有点难以理解。为此,我使用 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 的打印数据。我希望能够随时查看字典和键。另一个问题是我如何将键值添加到“向量?或 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)
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)
}
我认为“pk”将在 1 列中,但它在多列中,并且我收到 In rbind:结果列数不是向量长度的倍数
解决方案
推荐阅读
- java - 从 Parse 访问上传的图像,给了我未定义的文件 URL 对象
- android - 尝试使用 post 方法在 android studio 中使用 laravel 护照时出错
- reactjs - 在 gh-pages 上部署 react 项目,但页面没有更新
- c - 将 mkmf 与 Ruby ext 一起使用 使用 -L 和 -I 和 -l 链接静态库
- javascript - 如何阻止在子元素上触发事件而不是添加指针事件?
- javascript - 如何在不使用 Tampermonkey 扩展的情况下加载 JS
- python - 如何多次拆分输入文本
- java - 如何将底页窥视高度设置为视图下方?
- python - 如何在循环中使用变量来创建特定的变量名
- angular - 错误:使用 ng serve --aot 时找不到模块