скачать / очистить таблицу из htmlTable

Я пытаюсь загрузить csv из

https://oceanwatch.pifsc.noaa.gov/erddap/griddap/goes-poes-1d-ghrsst-RAN.html

или я пытаюсь очистить фрейм данных от вывода таблицы html с веб-сайта, найденного здесь

https://oceanwatch.pifsc.noaa.gov/erddap/griddap/goes-poes-1d-ghrsst-RAN.htmlTable?analysed_sst[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],analysis_error[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],маска[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],sea_ice_fraction[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)]

Я попытался очистить данные, используя

library(rvest)
url <- read_html("https://oceanwatch.pifsc.noaa.gov/erddap/griddap/goes- 
  poes-1d-ghrsst-RAN.htmlTable?analysed_sst[(2019-02-09T12:00:00Z):1:(2019- 
  02-09T12:00:00Z)][(-7):1:(42)][(179):1:(238)],analysis_error[(2019-02- 
  09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-7):1:(42)][(179):1: 
  (238)],mask[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-7):1:(42)] 
  [(179):1:(238)],sea_ice_fraction[(2019-02-09T12:00:00Z):1:(2019-02- 
  09T12:00:00Z)][(-7):1:(42)][(179):1:(238)]")

test <-  url %>%
  html_nodes(xpath='table.erd.commonBGColor.nowrap') %>%
  html_text()

И я попытался загрузить csv с помощью

download.file(url, destfile = "~/Documents/test.csv", mode = 'wb')

Но ни то, ни другое не помогло. Функция download.file загрузила csv-файл с описанием узла. а метод rvest дал мне огромную строку символов на моем MacBook и нулевой фрейм данных в моих окнах. Я также пытался использовать selectorgadget (расширение chrome) для получения только необходимых мне данных, но, похоже, selectorgadget не работает с htmlTable.


person user8304241    schedule 11.02.2019    source источник
comment
Сайт позволяет загружать данные в различных форматах - почему бы сначала не загрузить их, а затем прочитать в r?   -  person 27 ϕ 9    schedule 11.02.2019
comment
Мне приходится скачивать файлы из диапазона 2004-2017 годов с интервалом в сутки ... может быть, даже ежечасно. Так что написать цикл, который проходит через различные загрузки, было бы проще всего.   -  person user8304241    schedule 11.02.2019


Ответы (1)


Мне удалось найти обходное решение с использованием пакета htmltab, хотя я не уверен, что он оптимален, это большой фрейм данных для веб-страницы, потребовалось некоторое время для загрузки во фрейм данных. table [2] предназначен для реальной таблицы, так как в приведенной вами ссылке есть 2 таблицы html.

url1 <- "https://oceanwatch.pifsc.noaa.gov/erddap/griddap/goes-poes-1d-ghrsst-RAN.htmlTable?analysed_sst[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],analysis_error[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],mask[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)],sea_ice_fraction[(2019-02-09T12:00:00Z):1:(2019-02-09T12:00:00Z)][(-6.975):1:(42.025)][(179.025):1:(238.025)]"
tbls <- htmltab(url1,which = "//table[2]")
rdf <- as.data.frame(tbls)

дайте мне знать, если это поможет.

person S N    schedule 11.02.2019