Beautiful Soup è una libreria Python molto utile per estrarre dati da documenti HTML e XML. È uno strumento perfetto per il web scraping, che è il processo di estrarre informazioni da siti web. Beautiful Soup trasforma un documento HTML complicato in un albero di oggetti Python, come tag, navigabile e ricercabile.
Le funzionalità principali di Beautiful Soup includono:
Ricerca di tag HTML con determinati attributi.
Navigazione attraverso l'albero HTML per accedere ai tag figli, ai tag genitore e ai tag fratelli.
Modifica dell'albero HTML.
Ricerca di stringhe all'interno dei tag.
Prima di poter utilizzare Beautiful Soup, devi installarlo. Una volta installato potrai utilizzare Beautiful Soup per estrarre tutti i link da una pagina web:
from bs4 import BeautifulSoup
import requests
url = 'http://example.com' # l'URL del sito web da cui desideri estrarre dati
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for link in soup.find_all('a'): # 'a' è il tag che indica un hyperlink
print(link.get('href'))
Con questo codice, stiamo prima inviando una richiesta GET al sito web per ottenere l'HTML della pagina.
Poi cerchiamo un oggetto BeautifulSoup da quell'HTML.
Infine, cerchiamo tutti i tag 'a' (che rappresentano i link) nell'HTML e stampiamo l'URL di ciascuno.
Un esempio più complesso potrebbe essere la ricerca di tutti i titoli di un blog:
from bs4 import BeautifulSoup
import requests
url = 'http://example-blog.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for title in soup.find_all('h2', class_='post-title'): # 'h2' con classe 'post-title' potrebbe essere il tag del titolo del post del blog
print(title.text) # stampa il testo del titolo
Stiamo così cercando tutti i tag 'h2' che hanno la classe 'post-title'.
Questo è solo un esempio e potrebbe non funzionare su tutti i blog poiché l'HTML potrebbe essere strutturato in modo diverso.
Dovresti esaminare l'HTML del sito specifico per vedere come sono strutturate le informazioni. Puoi farlo nella maggior parte dei browser web facendo clic con il tasto destro su un elemento della pagina e selezionando "Ispeziona" o "Ispeziona elemento".
Come potrebbe un Match Analyst sfruttare Beautiful Soup a proprio vantaggio?
Beautiful Soup può essere molto utile per l'analisi statistica di una partita di calcio se hai accesso a una pagina web che contiene le statistiche che desideri analizzare o tramite web scraping sei riuscito ad avere una tabella di dati molto approfonditi.
Beautiful Soup può estrarre queste informazioni e trasformarle in un formato utilizzabile per l'analisi.
Ecco un esempio di come potrebbe funzionare:
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = 'http://example-soccer-stats.com/match/12345' # URL delle statistiche della partita
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
stats = {}
stats_table = soup.find('table', class_='match-stats') # Trova la tabella delle statistiche
for row in stats_table.find_all('tr'): # Per ogni riga della tabella
cells = row.find_all('td') # Trova tutte le celle
if len(cells) == 3: # Se la riga ha tre celle
stat_name = cells[1].text.strip() # Il nome della statistica è nel mezzo
stats[stat_name] = {
'home': cells[0].text.strip(), # Il valore per la squadra di casa è a sinistra
'away': cells[2].text.strip() # Il valore per la squadra ospite è a destra
}
df = pd.DataFrame(stats) # Crea un DataFrame pandas dalle statistiche
print(df)
Questo codice estrae le statistiche della partita in una forma che può essere facilmente analizzata. Dopo aver eseguito questo codice, avrai un DataFrame pandas con tutte le statistiche che puoi poi utilizzare per l'analisi.
Bisogna notare che le pagine web possono cambiare la loro struttura nel tempo, quindi il codice che funziona oggi potrebbe non funzionare domani.
Inoltre, alcuni siti web potrebbero non gradire il web scraping e potrebbero bloccarti se lo fai. Assicurati sempre di rispettare i termini di servizio del sito web e di non sovraccaricare il sito con troppe richieste.
Comments