Come Creare un Web Scraper in Python con BeautifulSoup e Requests

In questo tutorial, imparerai come creare un web scraper in Python per estrarre dati dalle pagine web utilizzando le librerie BeautifulSoup e Requests. I web scraper possono essere molto utili per raccogliere e analizzare dati da siti web.

Passo 1: Installare le Librerie Necessarie

Per iniziare, dobbiamo installare le librerie beautifulsoup4 e requests. Esegui il seguente comando nel terminale:

pip install beautifulsoup4 requests

Passo 2: Importare le Librerie

Apri il tuo editor di testo e crea un file chiamato web_scraper.py. Inizia importando le librerie:


import requests
from bs4 import BeautifulSoup
        

Passo 3: Effettuare una Richiesta HTTP

Utilizzeremo la libreria requests per ottenere il contenuto della pagina web. Ecco un esempio di richiesta HTTP:


url = 'https://example.com'
response = requests.get(url)
        

Passo 4: Analizzare il Contenuto della Pagina

Passa il contenuto della pagina a BeautifulSoup per analizzarlo:


soup = BeautifulSoup(response.text, 'html.parser')
        

Passo 5: Estrarre le Informazioni

Ora puoi estrarre le informazioni che ti servono. Ad esempio, per estrarre tutti i titoli <h1> dalla pagina:


titles = soup.find_all('h1')
for title in titles:
    print(title.text)
        

Passo 6: Gestire le Eccezioni

È importante gestire eventuali errori che potrebbero verificarsi. Ecco un esempio di blocco try-except:


try:
    response = requests.get(url)
    response.raise_for_status()  # Verifica che la richiesta sia andata a buon fine
except requests.exceptions.RequestException as e:
    print(f'Errore: {e}')
        

Codice Finale

Ecco il codice completo per un semplice web scraper:


import requests
from bs4 import BeautifulSoup

url = 'https://example.com'
try:
    response = requests.get(url)
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    titles = soup.find_all('h1')
    for title in titles:
        print(title.text)
except requests.exceptions.RequestException as e:
    print(f'Errore: {e}')
        

Copia il Codice

Copia il codice qui sotto e usalo nel tuo progetto:


import requests
from bs4 import BeautifulSoup

#Creato con HTMLFacile

url = 'https://example.com'
try:
    response = requests.get(url)
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    titles = soup.find_all('h1')
    for title in titles:
        print(title.text)
except requests.exceptions.RequestException as e:
    print(f'Errore: {e}')