volete aiutarci? Ecco le opzioni disponibili:","Crunchbase","Chi siamo","Grazie a tutti per l'incredibile supporto!","Collegamenti rapidi","Programma di affiliazione","Premio","ProxyScrape prova premium","Controllore di proxy online","Tipi di proxy","Paesi proxy","Casi d'uso del proxy","Importante","Informativa sui cookie","Dichiarazione di non responsabilità","Informativa sulla privacy","Termini e condizioni","Media sociali","Facebook","LinkedIn","Twitter","Quora","Telegramma","Discordia","\n © Copyright 2025 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgio | IVA BE 0749 716 760\n"]}
Il web scraping è diventato un'abilità vitale per gli sviluppatori Python, gli analisti di dati e tutti coloro che lavorano con gli insiemi di dati. Quando si tratta di dati strutturati e ricchi, le tabelle presenti nei siti web sono spesso miniere d'oro di informazioni. Che si tratti di cataloghi di prodotti, statistiche sportive o dati finanziari, la capacità di estrarre e salvare i dati delle tabelle con Python è uno strumento prezioso.
Questa guida pratica vi accompagna passo dopo passo nel processo di scraping di tabelle da siti web utilizzando Python. Alla fine, saprete come utilizzare librerie popolari come requests, Beautiful Soup e persino pandas per accedere ai dati delle tabelle e memorizzarli in formati riutilizzabili come i file CSV.
Prima di addentrarci nei dettagli tecnici, ecco cosa vi serve per seguirci:
Utilizzeremo il comando pip per installare le librerie necessarie. È sufficiente eseguire il seguente comando nel terminale per completare l'installazione:
pip installa le richieste di beautifulsoup4 pandas
Il primo passo di qualsiasi progetto di scraping web è analizzare la struttura del sito web di destinazione. In questo esempio, faremo lo scraping dei dati da un sito web campione che presenta una tabella che mostra la classifica delle squadre di hockey. Di seguito è riportata un'anteprima della tabella:
Ecco come appare questa tabella nella struttura HTML.
Il primo passo consiste nel recuperare la pagina web che si vuole scrappare. Utilizzeremo la libreria requests per inviare una richiesta HTTP e recuperare il contenuto HTML dal sito web fittizio che stiamo utilizzando per ottenere il contenuto della tabella
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
In HTML, una tabella è un modo strutturato per presentare i dati in righe e colonne, proprio come in un foglio di calcolo. Le tabelle vengono create utilizzando l'opzione <table>
e il loro contenuto è diviso in righe (<tr>
) e le cellule (<td>
per le celle di dati o <th>
per le celle di intestazione). Ecco una breve descrizione di come funziona la struttura di una tabella:
<table>
funge da contenitore per tutte le righe e le celle.<tr>
(riga della tabella) rappresenta una fetta orizzontale della tabella.<td>
I tag contengono singoli valori di dati (o <th>
per le intestazioni). Ad esempio, in questo script, si individua il file <table>
con una classe specifica (class="tabella"
) ed estrarre le righe e le celle utilizzando Zuppa bella. Questo ci permette di estrarre i dati in modo sistematico e di prepararli per l'analisi o il salvataggio.
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
In questo passo, salveremo i dati della tabella estratta in un file CSV per un uso futuro e li visualizzeremo anche come DataFrame di pandas, in modo da poter vedere come sono strutturati i dati. Il salvataggio dei dati in formato CSV consente di analizzarli in seguito con strumenti come Excel, Google Sheets o Python stesso.
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(f"Data saved to {csv_filename}")
Quando si esegue questo codice, pandas creerà un file chiamato dati_tabella_scraped.csv
nella cartella di lavoro e i dati estratti saranno stampati nella console come segue:
Nome della squadra Anno Vittorie Sconfitte OT Sconfitte Vittoria % Gol fatti (GF) Gol subiti (GA) + / -
0 Boston Bruins 1990 44 24 0,55 299 264 35
1 Buffalo Sabres 1990 31 30 0,388 292 278 14
2 Calgary Flames 1990 46 260,575 344 263 81
3 Chicago Blackhawks 1990 49 230,613 284 211 73
4 Detroit Red Wings 1990 34 380,425 273 298 -25
Di seguito è riportato lo script Python completo per lo scraping dei dati delle tabelle da un sito web, il salvataggio in un file CSV e la visualizzazione dei dati estratti. Questo script combina tutti i passaggi trattati in questa guida in un unico flusso di lavoro coeso.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(df.head())
print(f"Data saved to {csv_filename}")
Questa guida vi ha accompagnato passo dopo passo nel processo: capire la struttura del sito web, estrarre i dati e salvarli per l'analisi. Se state costruendo insiemi di dati per la ricerca, automatizzando la raccolta dei dati o semplicemente esplorando le possibilità del web scraping, la padronanza di queste tecniche vi apre un mondo di opportunità.
Durante lo scraping, si possono incontrare problemi come i divieti IP o i limiti di velocità imposti dai siti web. È qui che i proxy diventano fondamentali. I proxy consentono di:
ProxyScrape offre un'ampia gamma di proxy, tra cui proxy residenziali, premium, dedicati e per dispositivi mobili, studiati su misura per lo scraping del web. Le loro soluzioni proxy affidabili e scalabili possono aiutarvi a gestire progetti di scraping su larga scala senza interruzioni, garantendo una raccolta di dati fluida ed efficiente.