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.
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).
# 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.
# 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">
.
# 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
# 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.
# 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.
GO TO FULL VERSION