【问题标题】:Parse list of JSON URLs through fromjson通过 fromjson 解析 JSON URL 列表
【发布时间】:2018-05-01 07:02:35
【问题描述】:

我有一个 url 表,每个都指向某个 json 输出。我想通过fromJSON(或任何其他 json 解析器)解析它们,以便从这些 json 输出中提取数据,并将其组合到一个列表列表中。

我的代码设置如下:

pages <- list()
for (i in 1:length(urltable))
{
mydata<-fromJSON(urltable[i], flatten=TRUE)
pages[[i]] <- mydata$entries
}

呈现错误项:

Error in (function (classes, fdef, mtable) :
unable to find inherited method for function 'fromJSON' for signature '"list", "missing"'

如果我在fromJSON() 中粘贴单个网址进行测试,它可以工作,所以我想问题在于fromJSON 不读取表格?

有人对如何执行此操作有建议吗?

补充:urltable 是一个 1 列 326 行的表。表头是:

    url
1     http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=10
2     http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=20
3 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=10
4 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=20
5 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=30
6 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=40

添加 2 个 urltable 的子集,dput(subset_urltable):

structure(list(url = c("http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=10","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=20","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=10","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=20","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=30","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=40","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=50","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=60","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=70","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=80")), row.names = c(NA, -10L), class = "data.frame", .Names = "url")

【问题讨论】:

  • 您也可以发布您的数据吗?
  • @DhawalKapil 当然,没有太多数据。它是一个 1 列的表,x 行只有 url。补充请看原帖。感谢您的帮助...

标签: r json rjsonio


【解决方案1】:

fromJSON 需要一个 json 字符串,在您的情况下,您正在尝试检索 json 数据并一次性转换它。您必须将您的网址中的数据提供给fromJSON。做这样的事情

mydata<-fromJSON(url(urltable[i]), flatten=TRUE)

url 会将提取的数据提供给fromJSON 函数。

完整的解决方案应该是这样的

pages <- list()
for (i in 1:length(urltable))
{
mydata<-fromJSON(url(as.character(urltable[i])), flatten=TRUE)
pages[[i]] <- mydata$entries
}

安装了curl 软件包后,您无需显式使用url 函数即可。 此外,如果您想遍历urltable 的所有行,请不要使用length(urltable),因为它会返回数据框中的列数,此处为1,而是使用length(urltable$url)

pages <- list()
for (i in 1:length(urltable$url))
{
    mydata<-fromJSON(as.character(urltable$url[i]), flatten=TRUE)
    pages[[i]] <- mydata$entries
}

【讨论】:

  • 感谢您的建议。但是,如果我尝试这样做,我会收到以下错误: url(urltablel[i]) 中的错误:无效的 'description' 参数。
  • 检查nieuw_url[i]是否为字符串元素,如果不是as.character(nieuw_url[i])
  • 很抱歉给您带来了困惑。 nieuw_url = 与 urltable 相同。但是,如果我执行 as.character(nieuw_url[i]),则会收到以下错误:此方法不支持 URL Scheme....
  • 您能否获取您的数据子集,执行dput(smalldata) 并将确切的输出粘贴到您上面的问题中
猜你喜欢
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2015-06-09
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多