Guide

Come estrarre title / meta description in Python da un sito (GUIDA)

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:

  1. 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.
  2. 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.
  3. 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:

  1. Definizione dell’URL della Sitemap Principale:
    • L’URL della sitemap principale è definito nella variabile sitemap_url .
  2. 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.
  3. 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.
  4. 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 metodo to_excel .
  5. 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 👇



Questo sito esiste da 4831 giorni (13 anni), e contiene 5981 articoli (circa 4.784.800 parole in tutto), con la bellezza di 32 tool gratuiti.