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

Estrazione dei Titoli e Descrizioni Meta da Sitemap XML: Un Tool Python


(Tophost) l' hosting web più economico - Prova il coupon sconto: 7NSS5HAGD5UC2

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 web esiste da 4802 giorni (13 anni), e contiene ad oggi 4996 articoli (circa 3.996.800 parole in tutto) e 31 servizi online gratuiti. – Leggi un altro articolo a caso