b) Documente, con comentarios, qué es lo que hace cada línea de código.
Paso 1 Elegir y correr las siguientes librerías:
library(rvest) Para correr web scraping.
library(tidyverse) Manejo de bases de datos.
code <- read_html(url) Descarga a R el código HTML de la página que elegimos.
code Lo guardamos en el objeto "code". Aquí debemos inspeccionar el número que cambia.
Paso 2 El node
node <- "#mw-content-text > div.mw-parser-output > table > tbody > tr:nth-child(2) > td:nth-child(4) > div > a" Dentro de toda la información bajada, ubicamos la "rama" de información que específicamente queremos utilizar, en este caso "4". Lo guardamos en un objeto llamado "node".
tabla_con_todo <- tablas[[1]] %>% as_tibble() Aquí convertimos "tablas" en un tibble, para hacer mejor la visualización de los datos.
articulos_x_pais <- data.frame() Finalmente guardamos en el objeto "articulos_x_pais" la base completa con países y artículos relacionados.
Paso 3 El for
for (i in 2:206){node <- paste0("#mw-content-text > div.mw-parser-output > table > tbody > tr:nth-child(", i, ") > td:nth-child(4) > div > a") Usamos "for" para especificar el ciclo automatizado que queremos. En este caso poner atención a esta variable "tr:nth-child(", i, ")", que es la que va a ir cambiando en el ciclo.
Paso 4
texto <- html_node(code, node) %>% html_text() Guardamos como texto lo contenido en "code" y "node". Ejemplo: Cannabis in Zambia.
enlace <- html_node(code, node) %>% html_attr("href") Lo mismo con los links.
articulos_x_pais <- rbind.data.frame(articulos_x_pais, tibble(texto = texto,enlace = enlace)) Usamos la función rbind.data.frame para unir los data frames contenidos en los () y creados con anterioridad.
Paso 5
articulos_x_pais
articulos_x_pais <- articulos_x_pais %>% filter(!is.na(texto)) %>% mutate(contenido_paginas = NA) Aqui filtramos la parte del texto que queremos y cambiamos el nombre de una variable con el "mutate".
Paso 6
Finalmente realizamos un nuevo "for" con la función de "tryCatch" para poder detectar en el ciclo si algo "tronó" y que nos lo imprima así: Error!, no hay datos en esta pagina: ".
for(i in 1:nrow(articulos_x_pais)){ tryCatch({ url2 <- articulos_x_pais\(enlace[i] code2 <- read_html(url2) parrafos_de_cada_articulo <- html_nodes(code2, "p") %>% html_text() %>% paste0(collapse = "<br>") articulos_x_pais\)contenido_paginas[i] <- parrafos_de_cada_articulo print(paste0("Descargados párrafos del articulo de: ", articulos_x_pais\(texto[i])) }, error = function(e){ print(paste0("Error!, no hay datos en esta pagina: ", articulos_x_pais\)texto[i])) articulos_x_pais$contenido_paginas[i] <- "No hay artículo" }) }
Como resultado, tenemos dos bases finales:
e) e) Explique qué tipo de visualizaciones o análisis podría realizar con los datos obtenidos.
Podríamos realizar un Mapa Interactivo mundial, en el que podamos distinguir con colores los países que usan la mariguana para recreación o medicinal, así como usar las leyendas para añadir los enlaces de cada país.
También podríamos visualizar a través de gráficas estáticas o interactivas la proporción en el mundo sobre el uso de la mariguana, quizás, agrupándo a los países en tres: recreativos, medicinales, ambos/ninguno.