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

  1. Configuració Inicial
  2. Extracció de Dades amb rvest
  3. Navegació per Pàgines Web
  4. Gestió de Dades Extretes
  5. Exercicis Pràctics

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

install.packages("rvest")
install.packages("httr")

Carregar els Paquets

Després d'instal·lar els paquets, els carreguem a la nostra sessió de treball.

library(rvest)
library(httr)

  1. Extracció de Dades amb 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

  1. URL de la pàgina web: Definim la URL de la pàgina que volem raspar.
  2. Llegir el contingut de la pàgina: Utilitzem read_html per llegir el contingut HTML de la pàgina.
  3. Extreure els títols dels articles: Utilitzem html_nodes per seleccionar els elements HTML que contenen els títols i html_text per extreure el text d'aquests elements.
  4. Mostrar els títols: Imprimim els títols extrets.

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

  1. Funció per extreure títols: Definim una funció que extreu els títols d'una pàgina donada.
  2. URL base: Definim la URL base de les pàgines.
  3. Nombre de pàgines: Especificar el nombre de pàgines que volem raspar.
  4. Llista per emmagatzemar els títols: Creem una llista per emmagatzemar els títols de totes les pàgines.
  5. Bucle per navegar per les pàgines: Utilitzem un bucle per navegar per les pàgines i extreure els títols.

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

  1. Exemple de dades brutes: Definim un vector amb dades brutes.
  2. Netejar les dades: Utilitzem trimws per eliminar espais en blanc al principi i al final de les cadenes.
  3. Mostrar les dades netes: Imprimim les dades netes.

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

  1. Troba una pàgina de notícies que t'interessi.
  2. Utilitza rvest per extreure els títols dels articles.
  3. Extreu també els enllaços dels articles.
  4. 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:

  1. Troba un lloc web amb informació distribuïda en diverses pàgines.
  2. Utilitza un bucle per navegar per les pàgines.
  3. Extreu la informació desitjada de cada pàgina.
  4. 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

Mòdul 2: Manipulació de Dades

Mòdul 3: Visualització de Dades

Mòdul 4: Anàlisi Estadística

Mòdul 5: Gestió Avançada de Dades

Mòdul 6: Conceptes Avançats de Programació

Mòdul 7: Aprenentatge Automàtic amb R

Mòdul 8: Temes Especialitzats

Mòdul 9: Projecte i Estudis de Cas

© Copyright 2024. Tots els drets reservats