Estrazione dei Titoli e Descrizioni Meta da Sitemap XML: Un Tool Python
Lo script Python che presentiamo oggi è libero e gratuito, ed è stato progettato per esplorare una sitemap XML che potrebbe contenere sitemaps annidate e URL di pagine HTML. Il suo scopo è quello di estrarre automaticamente i titoli e le descrizioni meta delle pagine HTML elencate nella sitemap, facilitando l’analisi e l’organizzazione delle informazioni. Utilizzando librerie come requests
, BeautifulSoup
, e pandas
, l’obiettivo è quello di fornire un’implementazione efficiente e scalabile per l’elaborazione di sitemaps complesse, offrendo al contempo un feedback dettagliato sul progresso dell’operazione.
File: Questo codice Python estrae automaticamente title e meta description da una qualsiasi sitemap xml.
Questo script Python è progettato per esplorare una sitemap XML che potrebbe contenere altre sitemaps annidate e URL di pagine HTML. Il suo obiettivo principale è quello di estrarre i titoli e le descrizioni meta delle pagine HTML elencate nella sitemap e quindi salvare questi dati in un file Excel.
Dettagli sullo Script:
Librerie Utilizzate:
- requests: Utilizzata per fare richieste HTTP alle URL specificate.
- BeautifulSoup (bs4): Utilizzata per analizzare il contenuto HTML e XML delle pagine.
- pandas: Utilizzata per la creazione e la gestione di DataFrame, che nel nostro caso serve per organizzare i dati estratti prima di salvarli in un file Excel.
- openpyxl: Utilizzata da pandas per salvare il DataFrame in formato Excel.
Funzioni Definite:
extract_title_meta(url)
:- Questa funzione prende in input un URL di una pagina HTML.
- Utilizza la libreria
requests
per ottenere il contenuto della pagina. - Utilizza
BeautifulSoup
per analizzare il contenuto HTML della pagina e cerca il tag<title>
per estrarre il titolo della pagina. - Cerca anche il tag
<meta name="description">
per estrarre la descrizione meta della pagina. - Restituisce il titolo e la descrizione meta della pagina.
extract_urls_from_sitemap(sitemap_url)
:- Questa funzione prende in input l’URL di una sitemap XML.
- Utilizza
requests
per ottenere il contenuto della sitemap. - Utilizza
BeautifulSoup
con il parser XML per analizzare la sitemap e trova tutti i tag<sitemap>
e<url>
. - Per ogni
<sitemap>
, chiama ricorsivamente se stessa per estrarre gli URL dalle sitemaps annidate. - Per ogni
<url>
, estrae l’URL della pagina HTML. - Restituisce una lista di tutti gli URL delle pagine HTML trovate nella sitemap, inclusi quelli delle sitemaps annidate.
print_progress(processed, total, url)
:- Questa funzione stampa il progresso dell’elaborazione in percentuale.
- Prende in input il numero di URL già elaborati (
processed
), il totale degli URL da elaborare (total
) e l’URL specifico su cui lo script sta lavorando (url
).
Processo Principale:
- Definizione dell’URL della Sitemap Principale:
- L’URL della sitemap principale è definito nella variabile
sitemap_url
.
- L’URL della sitemap principale è definito nella variabile
- Estrazione degli URL dalla Sitemap:
- Utilizzando la funzione
extract_urls_from_sitemap
, lo script ottiene tutti gli URL delle pagine HTML dalla sitemap principale. - Durante questo processo, la funzione
print_progress
viene chiamata per mostrare il progresso dell’elaborazione e l’URL specifico su cui lo script sta operando.
- Utilizzando la funzione
- Estrazione dei Titoli e delle Descrizioni Meta:
- Per ogni URL estratto dalla sitemap, utilizza la funzione
extract_title_meta
per ottenere il titolo e la descrizione meta della pagina HTML corrispondente. - I risultati vengono aggiunti a una lista di dizionari
data
, dove ogni dizionario rappresenta i dati estratti da una pagina HTML.
- Per ogni URL estratto dalla sitemap, utilizza la funzione
- Creazione del DataFrame e Salvataggio dei Dati:
- Utilizza la libreria
pandas
per creare un DataFrame (df
) basato sui dati estratti. - Salva il DataFrame in un file Excel chiamato
sitemap_data.xlsx
utilizzando il metodoto_excel
.
- Utilizza la libreria
- Stampa del Messaggio di Conferma:
- Alla fine, lo script stampa un messaggio indicando che i dati sono stati estratti e salvati correttamente nel file Excel.
Esecuzione dello Script:
Per eseguire lo script:
- Assicurati di avere Python installato sul tuo computer.
- Installa le librerie necessarie eseguendo
pip install requests beautifulsoup4 pandas openpyxl
. - Salva il codice in un file Python, ad esempio
extract_sitemap_data.py
. - Esegui lo script da terminale eseguendo
python extract_sitemap_data.py
.
Questo script è utile quando hai una sitemap XML complessa che contiene sitemaps annidate e pagine HTML, e hai bisogno di estrarre rapidamente i titoli e le descrizioni meta di tutte le pagine HTML elencate.
Codice Python 3
import requests from bs4 import BeautifulSoup import pandas as pd from urllib.parse import urljoin import time def extract_title_meta(url): """Estrae il titolo e la meta description da un URL specificato.""" try: response = requests.get(url, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.content, "html.parser") title = soup.title.string if soup.title else "Titolo non trovato" description_tag = soup.find("meta", attrs={"name": "description"}) description = description_tag["content"] if description_tag else "Meta description non trovata" return {"URL": url, "Title": title, "Description": description} except requests.RequestException as e: return {"URL": url, "Title": "Errore durante la richiesta", "Description": str(e)} def extract_urls_from_sitemap(sitemap_url): """Estrae tutti gli URL presenti in una sitemap (anche annidata).""" urls = [] try: response = requests.get(sitemap_url, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.content, "xml") # Cerca tutti i tag <url> nella sitemap for loc in soup.find_all("loc"): urls.append(loc.text) # Cerca sitemap annidate nested_sitemaps = [loc.text for loc in soup.find_all("sitemap")] for nested_sitemap in nested_sitemaps: urls += extract_urls_from_sitemap(nested_sitemap) return urls except requests.RequestException as e: print(f"Errore nel recupero della sitemap: {e}") return [] def print_progress(processed, total, url): """Stampa il progresso dell'elaborazione.""" progress = (processed / total) * 100 print(f"Elaborazione: {progress:.2f}% - ({processed}/{total}) - URL: {url}") if __name__ == "__main__": sitemap_url = "https://tuosito.com/sitemap.xml" urls = extract_urls_from_sitemap(sitemap_url) data = [] total_urls = len(urls) for index, url in enumerate(urls, start=1): result = extract_title_meta(url) data.append(result) print_progress(index, total_urls, url) time.sleep(1) # Rispetta il server con un piccolo delay tra le richieste # Salva i dati estratti in un file Excel df = pd.DataFrame(data) df.to_excel("estrazione_dati.xlsx", index=False) print("Estrazione completata. I risultati sono stati salvati in 'estrazione_dati.xlsx'.")
👇 Contenuti da non perdere 👇
- Domini Internet 🌍
- intelligenza artificiale 👁
- Internet 💻
- Marketing & SEO 🌪
- Sicurezza & Privacy 👁
- 💬 Il nostro canale Telegram: iscriviti
- 🟠 SMS marketing: cos’è e come funziona
- 🔵 Cosa fare se WhatsApp non funziona (problemi whatsapp)
- 🟠 Una guida introduttiva a ADS-B