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.

Raspar datos de una tabla HTML en un iframe utilizando R

Estoy tratando de extraer la siguiente tabla de este enlace:

https://www.price.moc.go.th/en/home_en

Utilizando rvest, lo siguiente no funciona, pero no logro descubrir qué cambiar:

Leer código HTML

html <- read_html("https://www.price.moc.go.th/en/home_en")

Acceder a un selector CSS específico

check <- html %>%
  html_nodes("#cpi_index > td:nth-child(2)") %>%
  html_text()

Imagen de descripción:

enlace de imagen

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el selector CSS #cpi_index > td:nth-child(2) no está recuperando correctamente la tabla que desea extraer. Podrías intentar utilizar selectores CSS más específicos para apuntar a los elementos de la tabla que deseas extraer.

    Aquí tienes un código de ejemplo que podría funcionar mejor:

    “`{r}
    library(rvest)

    url <- “https://www.price.moc.go.th/en/home_en”

    page <- read_html(url)

    Extrae la tabla de interés apuntando a los elementos padres

    table_html <- page %>%
    html_nodes(“.cpi-container”) %>%
    html_nodes(“table”)

    Convierte el HTML de la tabla en un marco de datos

    table_df <- table_html %>%
    html_table(fill = TRUE) %>%
    as.data.frame()

    Limpia los nombres de las columnas de la tabla

    colnames(table_df) <- gsub(“[\r\n\t]”, “”, colnames(table_df))

    Elimina filas y columnas en blanco

    table_df <- table_df[-c(1, nrow(table_df)), -1]

    Muestra el marco de datos resultante

    table_df
    “`

    Este código utiliza selectores CSS para apuntar a los elementos padres de la tabla que deseas extraer, y luego extrae el HTML de esa tabla. Luego utiliza la función html_table() para convertir el HTML en un marco de datos, que se puede limpiar aún más según sea necesario.

    Ten en cuenta que los selectores CSS exactos que necesitas utilizar pueden depender de la estructura específica del HTML en el sitio web de destino, por lo que es posible que necesites experimentar con diferentes selectores para obtener los resultados deseados.

Comments are closed.