Come estrarre i link da una pagina html in Python
Per estrarre i link da un documento HTML con il linguaggio Python, posso usare la combinazione di moduli requests e BeautifulSoup
Questo codice automatizza il processo che un utente svolge manualmente: apre la pagina, ispeziona il codice sorgente per cerca i collegamenti ipertestuali (tag <a>) e restituisce l'elenco dei link trovati nella pagina.
import requests
from bs4 import BeautifulSoup
url = "https://www.andreaminini.net/python/
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Estrai tutti i link
for link in soup.find_all('a', href=True):
print(link['href'])
E' un semplice esempio di web scraping, ovvero un processo automatizzato che estrae informazioni da una pagina web. Vediamo in dettaglio come funziona, riga per riga.
Lo script importa le librerie requests e BeautifulSoup.
- requests
Questa libreria viene utilizzata per fare richieste HTTP. Nel contesto del web scraping, `requests` è spesso usato per scaricare il contenuto di una pagina web. - BeautifulSoup
È una libreria utilizzata per analizzare (o "parsing") documenti HTML e XML. Permette di navigare e manipolare facilmente l'albero DOM della pagina web.
La variabile `url` contiene l'indirizzo della pagina web che voglio analizzare.
url = "https://www.andreaminini.net/python/
Il metodo requests.get(url) effettua una richiesta GET a quell'URL.
Se la richiesta ha successo, il server risponde con il contenuto della pagina web, che viene memorizzato nella variabile `response`.
response = requests.get(url)
A questo punto comincia il parsing del contenuto HTML memorizzato nella variabile tramite BeautifulSoup.
soup = BeautifulSoup(response.text, 'html.parser')
Questo comando analizza il testo HTML usando il parser specificato (`'html.parser'` in questo caso), creando un oggetto `BeautifulSoup` che rappresenta la struttura dell'HTML in un formato che può essere facilmente navigato e manipolato.
Dove response.text contiene il contenuto testuale della risposta HTTP, ossia l'HTML della pagina web.
Il risultato dell'operazione di parsing viene memorizzato nella variabile `soap`.
Infine, il ciclo for provvede a leggere ed estrarre i link presenti nella variabile 'soap'.
for link in soup.find_all('a', href=True):
print(link['href'])
Il metodo `soup.find_all('a', href=True)` cerca tutti gli elementi `<a>` nel documento HTML che hanno un attributo `href`. Dove gli elementi `<a>` sono i link ipertestuali ovvero i tag <a>.
Per ogni elemento `<a>` trovato, viene stampato il valore dell'attributo `href`, che è l'URL a cui il link punta.
Questo semplice script estrae tutti i link presenti nella pagina che ho indicato nella variabile 'url'.
E così via.