Introducció
El web scraping és una tècnica utilitzada per extreure informació de llocs web de manera automàtica. En aquest mòdul, aprendrem com utilitzar R per realitzar web scraping, des de la configuració inicial fins a l'extracció i processament de dades.
Continguts
- Configuració Inicial
- Extracció de Dades amb
rvest
- Navegació per Pàgines Web
- Gestió de Dades Extretes
- Exercicis Pràctics
- Configuració Inicial
Instal·lació de Paquets Necessaris
Per començar amb el web scraping en R, necessitarem instal·lar alguns paquets. Els més comuns són rvest
i httr
.
Carregar els Paquets
Després d'instal·lar els paquets, els carreguem a la nostra sessió de treball.
- Extracció de Dades amb
rvest
rvest
Exemple Bàsic
Suposem que volem extreure els títols dels articles d'una pàgina de notícies. Utilitzarem el paquet rvest
per fer-ho.
# URL de la pàgina web url <- "https://example.com/news" # Llegir el contingut de la pàgina webpage <- read_html(url) # Extreure els títols dels articles titles <- webpage %>% html_nodes(".article-title") %>% html_text() # Mostrar els títols print(titles)
Explicació del Codi
- URL de la pàgina web: Definim la URL de la pàgina que volem raspar.
- Llegir el contingut de la pàgina: Utilitzem
read_html
per llegir el contingut HTML de la pàgina. - Extreure els títols dels articles: Utilitzem
html_nodes
per seleccionar els elements HTML que contenen els títols ihtml_text
per extreure el text d'aquests elements. - Mostrar els títols: Imprimim els títols extrets.
- Navegació per Pàgines Web
Paginació
Moltes vegades, la informació que necessitem està distribuïda en diverses pàgines. A continuació, veurem com navegar per aquestes pàgines.
# Funció per extreure títols d'una pàgina extract_titles <- function(url) { webpage <- read_html(url) titles <- webpage %>% html_nodes(".article-title") %>% html_text() return(titles) } # URL base base_url <- "https://example.com/news?page=" # Nombre de pàgines a raspar num_pages <- 5 # Llista per emmagatzemar els títols all_titles <- list() # Bucle per navegar per les pàgines for (i in 1:num_pages) { page_url <- paste0(base_url, i) titles <- extract_titles(page_url) all_titles <- c(all_titles, titles) } # Mostrar tots els títols print(all_titles)
Explicació del Codi
- Funció per extreure títols: Definim una funció que extreu els títols d'una pàgina donada.
- URL base: Definim la URL base de les pàgines.
- Nombre de pàgines: Especificar el nombre de pàgines que volem raspar.
- Llista per emmagatzemar els títols: Creem una llista per emmagatzemar els títols de totes les pàgines.
- Bucle per navegar per les pàgines: Utilitzem un bucle per navegar per les pàgines i extreure els títols.
- Gestió de Dades Extretes
Neteja de Dades
Després d'extreure les dades, és possible que necessitem netejar-les abans d'utilitzar-les.
# Exemple de dades brutes raw_data <- c(" Title 1 ", "Title 2\n", "\tTitle 3") # Netejar les dades clean_data <- trimws(raw_data) # Mostrar les dades netes print(clean_data)
Explicació del Codi
- Exemple de dades brutes: Definim un vector amb dades brutes.
- Netejar les dades: Utilitzem
trimws
per eliminar espais en blanc al principi i al final de les cadenes. - Mostrar les dades netes: Imprimim les dades netes.
- Exercicis Pràctics
Exercici 1: Extreure Informació d'una Pàgina Web
Objectiu: Extreure els títols i els enllaços dels articles d'una pàgina de notícies.
Instruccions:
- Troba una pàgina de notícies que t'interessi.
- Utilitza
rvest
per extreure els títols dels articles. - Extreu també els enllaços dels articles.
- Emmagatzema els títols i els enllaços en un data frame.
Solució:
# URL de la pàgina web url <- "https://example.com/news" # Llegir el contingut de la pàgina webpage <- read_html(url) # Extreure els títols dels articles titles <- webpage %>% html_nodes(".article-title") %>% html_text() # Extreure els enllaços dels articles links <- webpage %>% html_nodes(".article-title a") %>% html_attr("href") # Crear un data frame amb els títols i els enllaços articles <- data.frame(Title = titles, Link = links) # Mostrar el data frame print(articles)
Exercici 2: Navegació per Pàgines
Objectiu: Extreure informació de diverses pàgines d'un lloc web.
Instruccions:
- Troba un lloc web amb informació distribuïda en diverses pàgines.
- Utilitza un bucle per navegar per les pàgines.
- Extreu la informació desitjada de cada pàgina.
- Emmagatzema tota la informació en una llista o data frame.
Solució:
# Funció per extreure informació d'una pàgina extract_info <- function(url) { webpage <- read_html(url) info <- webpage %>% html_nodes(".info-class") %>% html_text() return(info) } # URL base base_url <- "https://example.com/info?page=" # Nombre de pàgines a raspar num_pages <- 5 # Llista per emmagatzemar la informació all_info <- list() # Bucle per navegar per les pàgines for (i in 1:num_pages) { page_url <- paste0(base_url, i) info <- extract_info(page_url) all_info <- c(all_info, info) } # Mostrar tota la informació print(all_info)
Conclusió
En aquest mòdul, hem après com realitzar web scraping amb R utilitzant els paquets rvest
i httr
. Hem vist com extreure dades d'una pàgina web, navegar per diverses pàgines i netejar les dades extretes. Els exercicis pràctics proporcionats t'ajudaran a consolidar els coneixements adquirits. En el següent mòdul, explorarem com treballar amb APIs i JSON per extreure dades de fonts en línia.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres