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.
Per iniziare, dobbiamo installare le librerie beautifulsoup4
e requests
. Esegui il seguente comando nel terminale:
pip install beautifulsoup4 requests
Apri il tuo editor di testo e crea un file chiamato web_scraper.py
. Inizia importando le librerie:
import requests
from bs4 import BeautifulSoup
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)
Passa il contenuto della pagina a BeautifulSoup
per analizzarlo:
soup = BeautifulSoup(response.text, 'html.parser')
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)
È 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}')
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 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}')