1

我正在尝试使用 R 从荷兰的一个开放数据源中获取数据。来源在这里

当您在浏览器(至少是 Chrome)中打开它时,它会显示为 xml 代码。所以我想我可以使用 RCurl 包来解析它,然后使用 XPath 来提取我寻找的特定节点。

但是,在尝试解析它时,我遇到了问题。它似乎不是直接的 xml,但里面有 json。

如何轻松地从数据源中提取信息?不是在寻找完整的解决方案,只是在正确的方向上提供指导。

如果我尝试:

url <- "http://www.kiesbeter.nl/open-data/api/care/careproviders/?apikey=18a2b2b0-d232-4f48-8d10-5fc10ff04b17"
html <- getURL(url)
doc <- htmlParse(html,asText = TRUE)

看来该文档仍然是某种 JSON 格式。我似乎无法使用getNodeSet(doc, "//careproviders"). 但是,如果我首先使用 fromJSON,我会以一种尴尬的列表格式得到它。

所以问题是我如何处理这些数据,以便我可以轻松地从这个数据集中获取信息(例如所有护理提供者)。我如何识别数据的格式?

4

2 回答 2

2

利用

html <- getURL(url, httpheader = c(Accept = "text/xml"))

使用指定的内容类型来获取带有 curl 的 XML。

一点澄清。该服务提供 XML 和 JSON 数据格式,默认为 JSON。您的浏览器发送text/xml(以及其他)Accept带有请求的标头,因此服务返回 XML。curl(默认情况下)不发送任何内容,因此服务返回 JSON 格式,这是默认类型。

于 2013-08-08T10:34:27.530 回答
1

该文档采用 JSON 格式。

library(rjson)
library(RCurl)
ll <- fromJSON(getURL(url))

json格式比解析列表的 xml 格式更友好、更快捷。例如:

ll$careproviders$careprovider[[1]]
$id
[1] "1"

$friendly_name
[1] "ziekenhuizen"

$name
[1] "Ziekenhuizen"

$CareProviderCategoryId
[1] "8"
于 2013-08-08T10:45:24.493 回答