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.

R – Bucle para buscar y combinar páginas usando rvest

Me gustaría raspar los datos contenidos en tablas en varias páginas. Usé el código a continuación para raspar la primera tabla, pero no estoy seguro de cómo raspar las tablas en otras páginas:

library(rvest)
library(dplyr)

WA_link <- "https://www.worldathletics.org/records/toplists/sprints/100-metres/outdoor/women/senior/2021?page=1"
WA_page <- read_html(WA_link)

WA_table <- WA_page %>%
      html_nodes("table.records-table") %>%
      html_table() %>%
      .[[1]]

Me gustaría que todas las tablas (o un número determinado de tablas) fueran raspadas y luego combinadas en un marco de datos. ¿Cómo se puede adaptar mi código aquí para lograr esto?

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para extraer datos contenidos en tablas en varias páginas, podemos utilizar un bucle para recorrer cada página y extraer las tablas. Aquí te presentamos un ejemplo de código utilizando el bucle for y la función rbind() para combinar las tablas en un solo conjunto de datos:

    library(rvest)
    library(dplyr)
    
    # Fijamos el número de páginas a extraer
    num_pages <- 3
    
    # Inicializamos un conjunto de datos vacío para almacenar las tablas extraídas
    combined_table <- data.frame()
    
    # Extraemos las tablas de cada página y las combinamos
    for (i in 1:num_pages) {
      WA_link <- paste0("https://www.worldathletics.org/records/toplists/sprints/100-metres/outdoor/women/senior/2021?page=", i)
      WA_page <- read_html(WA_link)
      WA_table <- WA_page %>% html_nodes("table.records-table") %>% html_table() %>% .[[1]]
      combined_table <- rbind(combined_table, WA_table)
    }
    
    # Visualizamos el conjunto de datos combinado
    combined_table
    

    Aquí, fijamos el número de páginas a extraer utilizando la variable num_pages. Luego, inicializamos un conjunto de datos vacío combined_table para almacenar las tablas extraídas. En el bucle for, recorremos cada página, extraemos la primera tabla utilizando un código similar al original y la combinamos con las tablas anteriores utilizando la función rbind().

    Después del bucle, podemos visualizar el conjunto de datos combinado utilizando combined_table. Puedes ajustar la variable num_pages para extraer más o menos páginas según sea necesario.

Comments are closed.