CodeGym /Corsi /Python SELF IT /Uso di BeautifulSoup e estrazione di dati

Uso di BeautifulSoup e estrazione di dati

Python SELF IT
Livello 31 , Lezione 1
Disponibile

Se pensi che le pagine web siano solo immagini carine e testo, ho una notizia per te: sono come cipolle — a strati, e possono farti piangere (di gioia, ovviamente!) quando scopri quanti dati puoi estrarre da esse. Oggi scaviamo nei documenti HTML con la libreria BeautifulSoup. Prendi la tua pala virtuale — è ora di scavare!

1. Analisi dei documenti HTML

Pagine semplici

Analizziamo qualche documento HTML semplice per capire da cosa sono composti e quali elementi possono essere interessanti per l'estrazione dei dati.

Esempio di una pagina di notizie:

HTML

<html>
  <head>
    <title>Notizie</title>
  </head>
  <body>
    <h1>La notizia principale del giorno</h1>
    <p>Oggi è successo qualcosa di importante!</p>
  </body>
</html>

In questo esempio, h1 contiene il titolo dell'articolo, mentre p contiene il testo principale.

L'influenza della struttura HTML sul web scraping

Prima di usare BeautifulSoup, è importante capire come è strutturato il documento HTML che vuoi analizzare. Questo ci aiuta a individuare quali parti della pagina contengono i dati richiesti. Ad esempio, se stai cercando il titolo della pagina, guarda il <h1>, mentre per estrarre un elenco usa <ul> e <li>.

Preparazione per il web scraping

Prima di iniziare l'estrazione dei dati, è importante identificare i tag e gli attributi chiave. Ad esempio, se gli sviluppatori web hanno già etichettato i dati nella loro pagina usando un attributo come class="headline" per i titoli, questo ti sarà molto utile. Usa gli strumenti di sviluppo nel browser per esplorare la struttura HTML. Fai clic destro su un elemento e seleziona "Ispeziona" (in Google Chrome).

2. Installazione e configurazione delle librerie

Installazione di BeautifulSoup e requests

Per lavorare con gli HTML utilizzeremo la libreria BeautifulSoup. Inoltre, per caricare le pagine HTML ci tornerà utile requests. L'installazione è semplice e richiede solo un paio di comandi nella tua console:

Bash

pip install beautifulsoup4 requests

Collaborazione tra requests e BeautifulSoup

Requests ci permette di richiedere l'HTML di una pagina web, mentre BeautifulSoup ci aiuta ad analizzarla. Vediamo come funziona in pratica:

Python

import requests
from bs4 import BeautifulSoup

# Carichiamo la pagina
url = 'https://example.com'
response = requests.get(url)

# Analizziamo la pagina con BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Estraiamo il titolo della pagina
title = soup.title.text
print('Titolo:', title)

3. Navigazione ed estrazione di dati tramite tag

Metodi di navigazione

Ora che abbiamo il documento HTML, possiamo usare BeautifulSoup per navigarci. Il fantastico metodo .select() permette di estrarre dati usando i selettori CSS.

Estrazione di dati tramite tag

BeautifulSoup offre metodi che permettono di trovare elementi tramite i loro tag, come find e find_all. Sono molto utili per trovare i pezzi di dati desiderati:

Python

# Troviamo il primo paragrafo
paragraph = soup.find('p').text
print('Primo paragrafo:', paragraph)

# Troviamo tutti gli elementi della lista
list_items = soup.find_all('li')
for item in list_items:
    print('Elemento della lista:', item.text)

Uso di attributi per filtrare

A volte dovrai estrarre elementi che soddisfano certe condizioni, per esempio, che abbiano una specifica class. BeautifulSoup rende questa operazione molto semplice:

Python

# Estrazione di un elemento con una classe specifica
headline = soup.find('h1', class_='main-headline').text
print('Titolo:', headline)

4. Uso dei selettori CSS

Cosa sono i selettori CSS?

I selettori CSS sono strumenti potenti dal punto di vista di un programmatore Python, che permettono di estrarre dati secondo criteri specifici. Possono essere utilizzati per trovare elementi con stili comuni, rendendo il web scraping più flessibile e preciso.

Uso dei selettori in BeautifulSoup

BeautifulSoup permette l'uso dei selettori CSS tramite il metodo select. Ad esempio:

Python

# Selezione di tutti i link
links = soup.select('a')
for link in links:
    print('Link:', link['href'])

Puoi anche combinare i selettori per una selezione più precisa. Ad esempio, soup.select('div.article h2') selezionerà tutti gli h2 dentro i div con la classe article.

Esempi di ricerca con i selettori CSS

Applichiamo le nostre conoscenze alla pratica. Seleziona tutti i paragrafi con classe highlight e stampa il loro testo:

Python

# Estrazione di tutti i paragrafi con classe 'highlight'
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
    print('Paragrafo evidenziato:', para.text)

Per ora è tutto, non dimenticare di esercitarti sulle tue competenze di scraping prima del prossimo incontro. Buona fortuna nel fantastico mondo del parsing!

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION