if (!require(tidyverse)) {install.packages("tidyverse")} if (!require(readxl)) {install.packages("readxl")} if (!require(httr)) {install.packages("httr")} if (!require(lubridate)) {install.packages("lubridate")} if (!require(glue)) {install.packages("glue")} begin <- ymd("2022-02-01") end <- ymd("2022-02-07") days_to_retrieve <- c(begin, begin + days(1:as.integer(interval(begin, end) / days(1)))) get_dayly_data <- function(day_to_retrieve) { url <- glue("https://www.bvc.com.co/mercados/DescargaXlsServlet?archivo=acciones&fecha={as.character(day_to_retrieve)}&resultados=100&tipoMercado=1") GET(url, write_disk(tf <- tempfile(fileext = ".xls"))) df <- read_excel(tf, 1L) str(df) if (any(dim(df) == c(0, 0))) { return(tibble(`Nemotecnico` = "", `Ultimo Precio` = double())) } df %>% select("Nemotecnico", "Ultimo Precio") } selected_species <- c("CELSIA", "NUTRESA", "BCOLOMBIA") ## example of selected species datos <- days_to_retrieve %>% map(get_dayly_data) %>% set_names(days_to_retrieve) %>% enframe() %>% unnest(cols = c(value)) datos %>% filter(Nemotecnico %in% selected_species)