Eres un analista de datos de una startup de delivery de alimentos saludables. Tu equipo necesita entender la estructura de precios del mercado de verduras en plazaVea (uno de los supermercados más importantes de Perú) para optimizar tu estrategia de precios, identificar oportunidades de compra y comprender la estacionalidad de productos. Deberás extraer, analizar y visualizar los datos de verduras disponibles en su página web para tomar decisiones estratégicas que maximicen el margen de ganancia mientras mantienen precios competitivos.
# Cargar las librerías necesarias
library(rvest) # Para extraer datos de páginas web
## Warning: package 'rvest' was built under R version 4.4.3
library(httr) # Para hacer peticiones web
## Warning: package 'httr' was built under R version 4.4.3
library(dplyr) # Para manipular datos
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(stringr) # Para trabajar con texto
## Warning: package 'stringr' was built under R version 4.4.3
# Hacer la petición a la página web
url <- "https://www.plazavea.com.pe/frutas-y-verduras/verduras"
pagina_web <- GET(url) # Obtenemos la página
contenido <- content(pagina_web, "text") # Extraemos el contenido
# Buscamos el texto que contiene el número total de productos
# En el código HTML, esta información aparece en un elemento con clase "value"
total_productos <- contenido %>%
read_html() %>% # Convertimos a formato manipulable
html_nodes(".value") %>% # Buscamos elementos con clase "value"
html_text() %>% # Extraemos el texto
.[1] %>% # Tomamos el primer resultado (que es el total)
as.numeric() # Convertimos a número
print(paste("Total de productos:", total_productos))
## [1] "Total de productos: 362"
# Para las subcategorías, necesitamos buscar en el menú de navegación lateral
# Según el HTML, están en elementos con clase "dropdown-menu__item__text"
subcategorias <- contenido %>%
read_html() %>%
html_nodes(".verduras a") %>% # Buscamos enlaces dentro de la lista de verduras
html_text() %>% # Extraemos el texto
trimws() %>% # Eliminamos espacios en blanco
.[!grepl("^\\s*$", .)] # Eliminamos elementos vacíos
print("Principales subcategorías de verduras:")
## [1] "Principales subcategorías de verduras:"
print(subcategorias)
## [1] "Zapallo, Berenjena y Caigua (10)"
## [2] "Cebolla, Ajo, Rocoto y Ají (22)"
## [3] "Brócoli, Coliflor, Alcachofa y Col (16)"
## [4] "Apio, Espárrago y Otros Tallos (14)"
## [5] "Lechuga, Espinaca y Hojas Verdes (74)"
## [6] "Hierbas e Infusiones (17)"
## [7] "Arveja, Vainita, Haba y Otras Legumbres (9)"
## [8] "Tomate, Pepino y Pimiento (20)"
## [9] "Papa, Camote, Yuca y Otros Tubérculos (27)"
## [10] "Zanahoria, Beterraga, Rabanito y Otras Raíces (12)"
## [11] "Verduras Congeladas (45)"
## [12] "Hongos, Setas y Germinados (33)"
## [13] "Ensaladas y Verduras Picadas (39)"
## [14] "Limón (5)"
## [15] "Choclo (10)"
## [16] "Verduras Orientales (10)"