Как распознать формат данных - выскабливание в R
Я пытаюсь использовать 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, я получаю его в неудобном формате списка.
Таким образом, вопрос заключается в том, как я могу обработать эти данные, чтобы я мог легко получить информацию из этого набора данных (например, все поставщики медицинских услуг). И как мне узнать, в каком формате находятся данные?
2 ответа
Использование
html <- getURL(url, httpheader = c(Accept = "text/xml"))
с указанным типом контента, чтобы получить XML с curl.
Небольшое уточнение. Служба предоставляет форматы данных XML и JSON, по умолчанию используется JSON. Ваш браузер отправляет text/xml
(среди прочих) в Accept
заголовок с запросом, поэтому сервис возвращает XML. Curl (по умолчанию) ничего не отправляет, поэтому сервис возвращает формат JSON, который является типом по умолчанию.
Документ в формате 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"