a) Explique qué datos extrae el código.

El nombre de 197 países del mundo, en los cuales se detalla el uso que se le da a la mariguana: recreativo y/o medicinal.

Además vienen los enlaces de Wikipedia para cada país respecto al mismo tema del cannabis.

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.
url <- "https://en.wikipedia.org/wiki/Legality_of_cannabis" Ubicar la URL de donde queremos extraer los 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".
tablas <- html_table(code, fill = TRUE) Aquí traducimos esa información en una tabla y la guardamos en un objeto llamado "tablas".
tabla_con_todo <- tablas[[1]] %>% as_tibble() Aquí convertimos "tablas" en un tibble, para hacer mejor la visualización de los datos.
html_node(code, node) %>% html_text() Esta función extrae la rama del código de la página web que tenemos en los objetos "code" y "node".
html_node(code, node) %>% html_attr("href") Esta función extrae el atributo HTML.
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.
enlace <- paste0("https://en.wikipedia.org/", enlace) Pegamos la URL y el objeto creado de "enlace".
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.
print(paste0("Dato extraído no. ", i, "/206"))} Imprimimos.

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:
tabla_con_todo
articulos_x_pais

c) Explique el proceso seguido para la extracción de datos.

1.- Ubicamos una página web de la que nos interese extraer datos. Checamos si será a través de Web Scraping o de API´s.

3.- Exploramos la URL de la página web seleccionada a través de "inspeccionar". Detectar los elementos que nos van a servir para el proceso de recopilación de información.

4.- Extraer la ubicación de la rama de los datos de interés. Inspeccionarlos y detectar el número variable para poder modificar la URL.

5.- Convertir esos datos que ya tenemos en R en texto.

6.- Armar un loop con "for" para extrater los datos precisos que queremos de forma automatizada, siempre teniendo cuidado de que pueda "tronar" algo en el camino.

7.- Finalmente damos estructura a esos datos obtenidos a través de un tibble para que podamos realizar algún tipo de gráfico, mapa o estadística con ellos.

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.