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:
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.