我如何在url的数据帧上循环jsonlite函数?

问题描述 投票:0回答:1

我正在尝试对累积的一组api URL运行jsonlite函数。具体来说,我有一个名为url_df的数据框,该数据框具有一个称为URL的列,其中包含162800行api url。当我编写脚本并一次手动插入每个url时,它工作得很好。这是我用来一次在一个网址上手动运行的脚本:

May28 <- 'https://example.example.com/example'. 
May28 <- httr::GET(May28)
May28 <- httr::content(May28, as = 'text')
May28 <- jsonlite::fromJSON(May28)
dplyr::glimpse(May28)
May28 <- as.data.frame(May28)
write.table(May28, file="May28.csv", sep=",")

但是,由于我要遍历超过10万行的api URL,因此我想创建一个循环函数,将上述函数重复到列URL中的每一行(每个api url),这样我就不必手动将每个网址剪切并粘贴到脚本100K次以上。因此,我将此信息保存到了名为“ url_df”的数据框中,并尝试了以下代码:

j <- 1

for (j in 1:nrow(url_df)){
    url <- url_df$URL[[j]] %>%
  getdata <- GET(url) %>%
  rawdata <- httr::content(getdata, as='text') %>%
  data <- jsonlite::fromJSON(rawdata)
  data_df <- as.data.frame(data)
    print(j)
  j <- j+1
  Sys.sleep(0.5)
}

出于某种原因,它将无法运行。我遇到的错误之一是:jsonlite :: fromJSON(rawdata)中的错误:找不到对象'rawdata'。

一个可能很重要的警告:每个api网址都不会仅返回1个数据点值(例如1)。而是返回值列表(例如,星期日,1,星期二,2等)。

关于为什么会发生这种情况或如何克服这种情况的任何想法?

解决了第一个问题之后,我想尽可能地整理收集到的所有数据...

谢谢!!

r json api web-scraping web-scraping-language
1个回答
0
投票

[您是否尝试过%>%吗?另外,您可以尝试使用模拟API网址(例如https://jsonplaceholder.typicode.com/todos/1

© www.soinside.com 2019 - 2024. All rights reserved.