es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Método de R Selenium para descargar datos de diferentes años.

El siguiente código fue escrito en una de mis preguntas anteriores en la misma plataforma. Necesito descargar datos para el año 2020, sin embargo, la URL no cambia una vez que se hace clic en 2020 en la columna de la derecha en el enlace web proporcionado. El código está abriendo la página de 2020 en Firefox, pero no está descargando los archivos requeridos (los archivos de 2020) en el sistema. Está descargando los archivos de 2021 que no necesito. No puedo identificar cuál es el problema.
La URL en la que estoy trabajando es: https://www.rbi.org.in/scripts/AnnualPublications.aspx?head=Handbook%20of%20Statistics%20on%20Indian%20Economy
El código es:

library(tidyverse)
library(stringr)
library(purrr)
library(rvest)
library(RSelenium)

rD <- rsDriver(browser="firefox", port=4567L, verbose=F)
remDr <- rD[["client"]]

remDr$navigate("https://www.rbi.org.in/scripts/AnnualPublications.aspx?head=Handbook+of+Statistics+on+Indian+Economy")
elem <- remDr$findElement(using = "link text", "2020")
elem$clickElement()
page <- remDr$getPageSource()[[1]]
read_html(page) -> html
html %>%
  html_nodes("a") %>%
  html_attr("href") %>%
  str_subset("\\.PDF") -> urls
urls %>% str_split(.,'/') %>% unlist() %>% str_subset("\\.PDF") -> filenames

for(u in 1:length(urls)) {
  cat(paste('downloading: ', u, ' of ', length(urls)))
  download.file(urls[u], filenames[u], mode='wb')
}

system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código parece estar en la parte donde se extraen las URL de los archivos PDF. Actualmente, el código está extrayendo todas las URL que contienen “.PDF”, lo que incluye URL de archivos tanto de 2020 como de 2021. Para extraer solo las URL de los archivos de 2020, podemos modificar el código para buscar URL que contengan tanto “2020” como “.PDF”. Aquí está el código modificado para esta parte:

    html %>%
      html_nodes("a") %>%
      html_attr("href") %>%
      str_subset("2020") %>%
      str_subset("\\.PDF") -> urls
    

    Este código solo extraerá las URL que contengan “2020” y “.PDF”, lo cual nos dará solo las URL de los archivos de 2020.

Comments are closed.