CodeGym /Corsi /Python SELF IT /Estrazione di testi e attributi dagli elementi HTML con i...

Estrazione di testi e attributi dagli elementi HTML con i metodi BeautifulSoup

Python SELF IT
Livello 32 , Lezione 0
Disponibile

1. Introduzione ai metodi di estrazione del testo

Oggi impareremo a estrarre preziosi dati testuali e attributi dagli elementi HTML. Metti da parte il tuo machete, perché con BeautifulSoup lavorare con il codice è come andare in un giardino autunnale, dove le mele aspettano solo di essere raccolte. Sei pronto a raccogliere i frutti del tuo apprendimento? Allora iniziamo!

I metodi per estrarre testo dagli elementi HTML sono al primo posto nella nostra lista. Prima di iniziare a estrarre il testo, carichiamo la pagina.

Python

import requests
from bs4 import BeautifulSoup

# Carichiamo il codice HTML della pagina
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Ora abbiamo un oggetto soup che contiene la struttura ad albero del nostro documento HTML. Estraiamo il testo da qualche elemento di tag, ad esempio, un'intestazione.

Metodo .text e get_text()

L'attributo .text e il suo equivalente - metodo get_text() permettono di ottenere il contenuto testuale di un elemento (e di tutti i suoi elementi annidati).

Python

# Estraiamo il testo dal primo tag h1 trovato
h1_tag = soup.find('h1')
print(h1_tag.text)  # o h1_tag.get_text()

Prova tu stesso: trova altri elementi utilizzando i metodi di ricerca che abbiamo studiato nelle lezioni precedenti ed estrai da loro il testo. Rimarrai sorpreso da quante informazioni puoi ottenere!

2. Estrazione dei valori degli attributi

Testi a parte, a volte i dati importanti sono nascosti negli attributi, come i passaporti nelle tasche. Immagina di dover trovare l'indirizzo di un link o ottenere l'URL di un'immagine (e non chiedermi perché potrebbe servirti; magari vuoi collezionare immagini di gattini).

Estrazione dei valori degli attributi

Supponiamo di avere un elemento link <a href="https://example.com">Example</a>. Come possiamo ottenere il valore di href? Semplicissimo.

Python

# Estraiamo il link
a_tag = soup.find('a')
link = a_tag['href']
print("Link:", link)

Questo codice ha estratto il valore dell'attributo href. Qualsiasi altro attributo utile può essere estratto in modo analogo.

Provando ad estrarre un'immagine

Estrarre l'URL di un'immagine può essere altrettanto semplice. Consideriamo il caso di <img src="image.jpg" alt="Gattino">.

Python

# Estraiamo l'URL dell'immagine
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL immagine:", image_url)

La bellezza di lavorare con BeautifulSoup è che permette di trovare e estrarre facilmente i dati senza dover pensare troppo a come funziona la struttura HTML.

3. Esempi di estrazione di testo e attributi

È ora di passare agli esempi. Consideriamo un'attività più complessa: estraiamo tutti i link da una pagina, insieme al testo all'interno dei tag <a>.

Esempio: estrazione di tutti i link con testo

Python

# Troviamo tutti i tag a
a_tags = soup.find_all('a')

# Stampiamo il link e il testo
for a_tag in a_tags:
    link = a_tag['href']
    text = a_tag.get_text()
    print(f"Testo: {text}, Link: {link}")

Come vedi, il metodo find_all trova comodamente tutti gli elementi che soddisfano i criteri di ricerca, e il ciclo for permette di iterare su ciascuno di essi.

4. Gestione degli errori

Non dimenticare di gestire gli errori. A volte la struttura HTML potrebbe non essere come ti aspetti, o un elemento potrebbe non avere l'attributo atteso. Assicurati che il tuo codice non si "rompa" in questi casi.

Python

# Esempio di gestione errori durante l'estrazione di un attributo
try:
    link = a_tag['href']
except KeyError:
    link = None
    print("Attributo href non trovato!")

Questo rende lo script più robusto e non si fermerà a causa di un errore imprevisto.

5. Applicazioni reali

Nel 2019, un imprenditore russo ha condiviso la storia su come la sua azienda, specializzata in web scraping, ha raggiunto un fatturato annuale di 20 milioni di rubli. Ha sottolineato che la raccolta automatizzata delle informazioni non limita la concorrenza, ma al contrario aiuta le aziende ad adattarsi al mercato.

Ad esempio, uno dei clienti ha richiesto uno scraper per raccogliere giornalmente le disponibilità dei prodotti da un sito del fornitore, il che ha permesso di aggiornare rapidamente l'assortimento e i prezzi nel proprio e-commerce. L'imprenditore ha anche evidenziato che, nonostante i tentativi di alcuni siti di complicare il web scraping, le tecnologie moderne permettono di superare efficacemente tali ostacoli, garantendo alle aziende l'accesso ai dati necessari per prendere decisioni strategiche.

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