使用R中的API限制通过时间刮取数据

使用R中的API限制通过时间刮取数据,r,web-scraping,data-science,R,Web Scraping,Data Science,我正试图从Nordpool网站上获取消息。 链接到消息: API: 不幸的是,API只允许一次刮取1000条消息。但是,我想将2012年1月1日到今天为止SE中有关核能的所有信息包括在内(肯定超过1000条) 这是我必须抓取最后1000条消息的代码 url <- "https://ummapi.nordpoolgroup.com/messages?fuelTypes=14&IncludeOutdated=true&publicationStopDate=2019-

我正试图从Nordpool网站上获取消息。

链接到消息:

API:

不幸的是,API只允许一次刮取1000条消息。但是,我想将2012年1月1日到今天为止SE中有关核能的所有信息包括在内(肯定超过1000条)

这是我必须抓取最后1000条消息的代码

url <- "https://ummapi.nordpoolgroup.com/messages?fuelTypes=14&IncludeOutdated=true&publicationStopDate=2019-10-11&areas=10Y1001A1001A46L&limit=1000"

data <- as.data.frame(fromJSON(url))

url查看API文档,似乎有跳过/跳转X记录的规定,因此基本上您可以通过将跳过值设置为等于2000来访问接下来的1000条记录

因此,您可能可以编写一个for循环来循环,直到一天结束,例如:

library(jsonlite)

url <- "https://ummapi.nordpoolgroup.com/messages?fuelTypes=14&IncludeOutdated=true&publicationStopDate=2019-10-11&areas=10Y1001A1001A46L&limit=1000&skip="
max <- 0
skiprec <- 0
df1 <- c()

repeat {
  url <- paste0(url,skiprec)
  req <- fromJSON(url)

  max <- req$total

  article <- req$items$reasonCode
  df1 <- append(df1,article)

  if(skiprec >= max) {
    break
  }
  else {
    skiprec <- skiprec + 1000
  }

}

library(jsonlite)
网址
library(jsonlite)

url <- "https://ummapi.nordpoolgroup.com/messages?fuelTypes=14&IncludeOutdated=true&publicationStopDate=2019-10-11&areas=10Y1001A1001A46L&limit=1000&skip="
max <- 0
skiprec <- 0
df1 <- c()

repeat {
  url <- paste0(url,skiprec)
  req <- fromJSON(url)

  max <- req$total

  article <- req$items$reasonCode
  df1 <- append(df1,article)

  if(skiprec >= max) {
    break
  }
  else {
    skiprec <- skiprec + 1000
  }

}