我正在尝试使用R从荷兰的开放数据源获取数据。来源是here。
当您在浏览器(至少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)
然后,似乎doc仍处于某种JSON格式。我似乎无法使用getNodeSet(doc, "//careproviders")
。
但是,如果我首先使用fromJSON,我会以一种笨拙的列表格式得到它。
所以问题是如何处理这些数据,以便我可以轻松地从该数据集中获取信息(例如所有护理提供者)。我如何识别数据的格式?
答案 0 :(得分:2)
使用
html <- getURL(url, httpheader = c(Accept = "text/xml"))
使用指定的content-type来获取带curl的XML。
稍微澄清一下。该服务提供XML和JSON数据格式,默认为JSON。您的浏览器在text/xml
标头中发送Accept
(以及其他)请求,因此服务返回XML。 curl(默认情况下)不发送任何内容,service返回JSON格式,这是默认类型。
答案 1 :(得分: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"