#r #json #web-scraping
Вопрос:
Я пытаюсь удалить общедоступные данные с веб-сайта УВКБ ООН https://data2.unhcr.org/en/situations/mediterranean#
Я хочу загрузить все данные с расширением json. Ссылки на данные выделены желтым цветом, и вы можете увидеть ниже
Чтобы сделать это, я начал с кода, но понятия не имею, как его обработать.
library(jsonlite)
url <- 'https://data2.unhcr.org/en/situations/mediterranean#'
# Removes last character, i.e. amp;
url <- substr(url, 1, nchar(url)-1)
# Encodes URL to avoid errors
url <- URLencode(url)
# Extracts JSON from URL
json_extract <- fromJSON(url)
# Converts relevant list into a data.frame
df <- data.frame(json_extract[['items']])
Итак, может ли кто-нибудь помочь мне с кодом, как загрузить эти данные в таблицу, подобную таблице ниже
Ответ №1:
Щелкните правой кнопкой мыши на странице и выберите «Проверить». Затем перейдите на вкладку «Сеть». Нажмите на одну из кнопок JSON, и вы увидите, как отобразится выполняемый запрос. Это URL-адрес, который вам нужно использовать.
url <- 'https://data2.unhcr.org/population/get/timeseries'
query <- '?widget_id=267293amp;sv_id=11amp;population_group=4797,4798amp;frequency=monthamp;fromDate=2015-01-01'
# Extracts JSON from URL
json_extract <- fromJSON(paste0(url, query))
# Extracts data.frame from list (there might be other info in the list you want too)
df <- json_extract$data$timeseries
# Others
# https://data2.unhcr.org/population/?widget_id=267298amp;sv_id=11amp;population_group=4797,4798amp;year=latest # Total Arrivals
# https://data2.unhcr.org/population/?widget_id=267299amp;sv_id=11amp;population_group=4797amp;year=latest # Sea Arrivals
Дает:
tail(df)
month year unix_timestamp individuals
76 5 2021 1622160000 9401
77 6 2021 1624838400 9245
78 7 2021 1627430400 12565
79 8 2021 1630108800 15749
80 9 2021 1632787200 16052
81 10 2021 1635379200 1902