大佬教程收集整理的这篇文章主要介绍了R - 使用 'GET' 从所有页面获取 json 语句;去除页面限制,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在与我的问题相关的代码下方。
install.packages("librarian")
librarian::sHelf(httr,JsonlitE)
username <- "YourUsername"
password <- "Yourpassword"
base <- "https://base.url/servlet/ekp/xAPI/statements"
geT_Base <- GET(base,authenticate(username,password,type = "basic"))
geT_Base_text <- content(geT_Base,"text")
geT_Base_Json <- fromJsON(geT_Base_text,flatten = T)
使用当前代码,我可以获取前 100 个 API 语句;每页限制为 100 个。
然而,还有更多的语句存在,我想得到它们。换句话说,我需要下载更多的页面。从
geT_Base_Json$more
我知道我当前的陈述来自第 1 页
https://base.url/servlet/ekp/xAPI/statements?from=101".
如果我将 101 更改为 201,我将获得接下来 100 条语句的结果。然而,还有更多的陈述存在,我不知道有多少。是否可以编写一个循环,可以继续 GET 所有语句,直到没有更多语句存在?
我已经尝试了几次,但我真的被卡住了。我希望更有经验的 R 用户可以帮助一个菜鸟。
亲切的问候,
科尔苏
你可以试试这个:
out <- list()
baseurl <- "https://base.url/servlet/ekp/xAPI/statements?from="
counter <- 1L
while (true) {
thisurl <- paste0(baseurl,counter)
res <- tryCatch({
dat <- GET(thisurl,authenticate(..))
dat <- content(dat,"text")
fromJSON(dat,flatten = TRUE)
},error = function(E) NULL)
if (is.null(res) || !isTRUE(nrow(res) > 0)) break
out <- c(list,list(res))
counter <- counter + 100L # or perhaps + nrow(res)
}
out <- do.call(rbind,out)
以上是大佬教程为你收集整理的R - 使用 'GET' 从所有页面获取 json 语句;去除页面限制全部内容,希望文章能够帮你解决R - 使用 'GET' 从所有页面获取 json 语句;去除页面限制所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。