Usando R para "clicar" em um botão de download de arquivo em uma página da web
Estou tentando usar esta página da webhttp://volcano.si.edu/search_eruption.cfm para raspar dados. Existem duas caixas suspensas que solicitam filtros dos dados. Como não preciso de dados filtrados, deixo-os em branco e prossigo para a próxima página clicando em "Erupções de pesquisa"
O que notei, no entanto, é que a tabela resultante inclui apenas uma pequena quantidade de colunas (apenas 5) em comparação com a quantidade total de colunas (total de 24) que deveria ter. No entanto, todas as 24 colunas estarão lá se você clicar no botão "Baixar resultados para o Excel"e abra o arquivo baixado. É disso que eu preciso.
Portanto, parece que isso passou de um exercício de raspagem (usando httr e rvest) para algo mais difícil. No entanto, estou confuso sobre como realmente "clicar" no "Baixar resultados para o Excel"usando R.. Meu palpite é que terei que usar o RSelenium, mas aqui está o meu código tentando usar o httr com POST, caso haja uma maneira mais fácil que qualquer um de vocês possa encontrar. Também tentei usar gdata, data.table, XML, etc. sem sucesso, o que poderia ser apenas o resultado de um erro do usuário.
Além disso, pode ser útil saber que o botão de download não pode ser clicado com o botão direito do mouse para mostrar um URL.
url <- "http://volcano.si.edu/search_eruption_results.cfm"
searchcriteria <- list(
eruption_category = "",
country = ""
)
mydata <- POST(url, body = "searchcriteria")
Usando o Inspetor no meu navegador, pude ver que os dois filtros são "eruption_category" e "country" e ambos ficarão em branco, pois não preciso de nenhum dado filtrado.
Por fim, parece que o código acima me levará para a página que possui a tabela com apenas 5 colunas. No entanto, ainda não consegui raspar esta tabela usando rvest no código abaixo (usando SelectorGadget para raspar apenas uma coluna). No final, essa parte não importa tanto porque, como eu disse acima, preciso de todas as 24 colunas, não apenas essas 5. Mas, se você encontrar algum erro com o que fiz abaixo, ficaria muito grato .
Eruptions <- mydata %>%
read_html() %>%
html_nodes(".td8") %>%
html_text()
Eruptions
Obrigado por qualquer ajuda que você possa fornecer.