Usando R para “hacer clic” en el botón de descargar un archivo en una página web

Estoy intentando usar esta página webhttp://volcano.si.edu/search_eruption.cfm raspar datos. Hay dos cuadros desplegables que solicitan filtros de los datos. No necesito datos filtrados, por lo que los dejo en blanco y continúo en la página siguiente haciendo clic en "Erupciones de búsqueda".

Sin embargo, lo que he notado es que la tabla resultante solo incluye una pequeña cantidad de columnas (solo 5) en comparación con la cantidad total de columnas (total de 24) que debería tener. Sin embargo, las 24 columnas estarán allí si hace clic en "Descargar resultados a Excel"y abra el archivo descargado. Esto es lo que necesito.

Entonces, parece que esto se ha convertido de un ejercicio de raspado (usando httr y rvest) en algo más difícil. Sin embargo, estoy perplejo sobre cómo hacer "clic" en el "Descargar resultados a Excel"botón con R. Supongo que tendré que usar RSelenium, pero aquí está mi código tratando de usar httr con POST en caso de que haya una manera más fácil que cualquiera de ustedes pueda encontrar. También he intentado usar gdata, inútil, data.table, XML, etc., que podría ser el resultado de un error del usuario.

Además, puede ser útil saber que no se puede hacer clic derecho en el botón de descarga para mostrar una URL.

url <- "http://volcano.si.edu/search_eruption_results.cfm"

searchcriteria <- list(
    eruption_category = "",
    country = ""
)

mydata <- POST(url, body = "searchcriteria")

Usando el Inspector en mi navegador, pude ver que los dos filtros son "eruption_category" y "country" y ambos estarán en blanco ya que no necesito ningún dato filtrado.

Por último, parece que el código anterior me llevará a la página que tiene la tabla con solo 5 columnas. Sin embargo, todavía no pude raspar esta tabla usando rvest en el código a continuación (usando SelectorGadget para raspar solo una columna). Al final, esta parte no importa tanto porque, como dije anteriormente, necesito las 24 columnas, no solo estas 5. Pero, si encuentra algún error con lo que hice a continuación también, estaría agradecido .

Eruptions <- mydata %>%
    read_html() %>%
    html_nodes(".td8") %>%
    html_text()
Eruptions

Gracias por cualquier ayuda que pueda brindar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta