Я получил решение со следующим кодом:
library(jsonlite)
library(tidyverse)
library(httr)
library(stringr)
# APIs
url1 <- paste("https://content.guardianapis.com/search?api-
key=c3c4b8ff-bf4b-473f-832f-0440850a95be", sep = "", collapse="")
query1 <- "&q=genome%20editing&show-blocks=body&page-size=1&page=1"
query2 <- "&q=genome%20editing&show-blocks=body&page-
size=100&page="
### How many API calls
firstCall <- GET(paste(url1, query1, sep = "")) %>% content()
number_calls <- ceiling(firstCall$response$pages / 100)
api_calls <- paste(url1, query2, as.character(c(1:number_calls)),
sep = "")
DataFrameFromCall <- function(x) {
data <- fromJSON(x)
body <- data$response$results$blocks$body
textContent <- vector()
for (i in seq_along(body)) {
textContent[i] <- ifelse(is.null(body[[i]]$bodyTextSummary),
NA, body[[i]]$bodyTextSummary)
}
TestData <- data.frame(textContent)
return(TestData)
}
all.data <- data.frame(textContent=character(),
stringsAsFactors=FALSE)
for (i in 1:number_calls) {
all.data <- rbind(all.data, DatafromCall(api_calls[i]))
}
tibbleData <- as_tibble(all.data)
write.table(tibbleData, "GuardianGenomeEditing.txt", append =
FALSE, sep = " ", dec = ".", row.names = TRUE, col.names = TRUE)