Abarone.it Logo

Google - Sitemap e crawler

Django - Come costruire una Sitemap

La sitemap XML è una pagina (scritta appunto in XML) che raccoglie in maniera gerarchica tutte le pagine (e relativi link) del proprio sito web e le rende disponibili ai crawler dei motori di ricerca in modo che possano essere indicizzate nel miglior modo possibile.

La sitemap XML è stata introdotta da Google nel 2005 come protocollo per l'indicizzazione delle pagine dei siti web nello stesso motore di ricerca. Successivamente, tale protocollo, è stato adottato e supportato anche da altri motori di ricerca (Yahoo e Bing).

Predisporre una sitemap XML sul proprio sito ha notevoli vantaggi:

  • controllare quali pagina vogliamo effettivamente indicizzare

  • esporre anche le pagine che risultano isolate (non referenziate da nessun'altra pagina del sito)

  • indicizzare tutte le nostre pagine anche se il sito ha pochi link di ingresso.

Django è dotato di un framework di alto livello per la generazione della sitemap che permette di creare con facilità il file XML che verrà letto dai crawler dei motori di ricerca.

Tale framework è definito direttamente in Django (già dalla versione 1.0) nella app 'django.contrib.sitemaps'.

Poniamoci in un caso specifico: produrre un file sitemap.xml nel quale siano esposte le url dei soli elementi visualizzabili .

Seguendo ciò che spiega il tutorial ufficiale di Django, andiamo a:

  1. aggiungere la app 'django.contrib.sitemaps' nelle INSTALLED_APPS (nel file settings.py di django)
  2. Verificare di avere nel file settings.py "APP_DIRS:True" altrimenti aggiungimolo
  3. Aver installato sites framework

Fatto ciò mettiamo mano al codice e andiamo a creare un file denominato sitemap.py cosi composto:

  1. from django.contrib.sitemaps import Sitemap
  2. from main.models import Item
  3. class ProvaSitemap(Sitemap):
  4. changefreq = "weekly"
  5. priority = 0.5
  6. def items(self):
  7. return Item.objects.all()

Andiamo ora nel nostro file urls.py e aggiungiamo:

  1. from main.sitemaps import ProvaSitemap
  2. sitemaps = {
  3. 'news': ProvaSitemap()
  4. }
  5. urlpatterns = patterns('',
  6. url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
  7. url(r'^robots.txt$', include('robots.urls')),
  8. )

Nell'esempio ho inserito di proprisito il file robots.txt se dovesse servire.

Una cosa molto simpatica (ma anche molto utile) che si può aggiungere alla propria sitemap in django è il "Pinging Google"; con questo metodo si può fare in modo da "scomodare" Google ogni qual volta viene aggiunto un nuovo elemento che confluirà nella sitemap in modo tale da reindicizzarlo subito.


Pinging Google via manage.py ##

  1. django-admin.py ping_google

Una volta che l'applicazione è aggiunta al progetto, si può usare il comando da shell per fare il ping a Google

  1. python manage.py ping_google [/sitemap.xml]

barone.antonio@libero.it