# Creamos un rango de fechas
años <- rep(2017:2021,12)
meses <- mes <- sort(sprintf("%02d",rep(1:12,5)))
fechas <- sort(paste0(años,meses))

# Generando los links
Estacion_meses <- list()
for (i in fechas) {
  Estacion_meses[i] <- paste0("https://www.senamhi.gob.pe/mapas/mapa-estaciones-2/_dato_esta_tipo02.php?CBOFiltro=",i,"&estaciones=112233&t_e=M&estado=AUTOMATICA&cod_old=&cate_esta=EAA&soloAlt=292")
}

# iniciando la descarga y almacenranamiento en masa
# el siguiente código genera una lista de las tablas extraidas
# datos del año 2017 al 2021
villa <- list()
for (i in 1:length(Estacion_meses)) {
  villa[[i]]<-html_table(
    html_nodes(
      read_html(
        as.character(Estacion_meses[i])
        ), "table"
      )[2],
    header = TRUE,na.strings = "S/D"
    )
}


# Combinando todas las tablas descargadas en una sola:
vm <- Reduce(function(...) merge(..., all=TRUE), villa)

colnames(vm) <- c("date1", "hora","temp", "pp","hum","wd","ws")


vm$date <- as.POSIXct(paste(vm$date1,vm$hora,sep = " "), format = "%Y/%m/%d %H:%M")

openxlsx::write.xlsx(vm,"Villa_maría.xlsx")
tail(vm)
##            date1  hora temp pp   hum    wd  ws                date
## 26150 2021/12/31 18:00 20.7  0  98.1 166.4 1.8 2021-12-31 18:00:00
## 26151 2021/12/31 19:00 19.7  0  99.9 200.5 1.6 2021-12-31 19:00:00
## 26152 2021/12/31 20:00 19.3  0  99.9 172.3 0.9 2021-12-31 20:00:00
## 26153 2021/12/31 21:00 19.0  0 100.0 187.2 0.9 2021-12-31 21:00:00
## 26154 2021/12/31 22:00 19.2  0 100.0 191.5 1.2 2021-12-31 22:00:00
## 26155 2021/12/31 23:00 19.2  0  99.9 169.2 0.6 2021-12-31 23:00:00
windRose(vm, paddle = F, main = "Rosa de vientos de la Estación meteorológica Villa María")