feedfinder: a caccia di feed con python

feedfinder è una classe scritta in Python, inizialmente scritta da Mark Pilgrim ed attualmente mantenuta da Aaron Swartz.

La libreria fornisce due semplici metodi per individuare la presenza di un feed su una pagina web.

Contrariamente a quanto si potrebbe pensare, feedfinder non si limita a verificare la presenza del link di autodiscovery di un feed.
Questo è solo il primo di ben 8 passaggi di analisi necessari per individuare un feed con maggiori garanzie di esito positivo.

Funzionamento di feedfinder

Vediamo in breve il funzionamento della classe feedfinder.

  1. Ad ogni step agli URL è applicato un controllo per verificare che si tratti realmente di un feed.
  2. Se l'URL punta ad un feed, l'URl viene semplicemente restituito.
    In alternativa, la pagina viene scaricata e si procede alla ricerca di feed secondo i dettagli seguenti.
  3. Controllo dei feed collegati attraverso il tag LINK nell'header della pagina (autodiscovery).
  4. Controllo dei link <A> verso feed nello stesso server il cui nome del file termina per ".rss", ".rdf", ".xml" o
    ".atom".
  5. Controllo dei link <A> verso feed nello stesso server il cui nome del file contiene ".rss", ".rdf", ".xml" o
    ".atom".
  6. Controllo dei link <A> verso feed su server esterni il cui nome del file termina per ".rss", ".rdf", ".xml" o
    ".atom".
  7. Controllo dei link <A> verso feed su server esterni il cui nome del file contiene ".rss", ".rdf", ".xml" o
    ".atom".
  8. Controllo con una lista di URL che normalmente corrispondono a feed, ad esempio index.xml, atom.xml.
  9. Per ultimo, controllo della presenza di feed su Syndic8.com associati al sito.

Come è possibile comprendere da quanto appena esposto, la classe è decisamente completa e l'individuazione del feed potrebbe richiedere diversi secondi.

Struttura di feedfinder

feedfinder.py
Rappresenta l'intera classe feedfinder. Per funzionare non c'è bisogno di alcun altro file.
E' sufficiente importare la classe contenente in questo file ed usarne i comani specifici.

Esempi d'utilizzo

Vediamo di seguito due esempi di utilizzo di feedfinder.

Ricerca di un feed per la pagina web

>>> import feedfinder
>>> feedfinder.feed('scripting.com')

'http://scripting.com/rss.xml'

Ricerca dei feed per la pagina web

>>> import feedfinder
>>> feedfinder.feed('scripting.com')

['http://delong.typepad.com/sdj/atom.xml', 
 'http://delong.typepad.com/sdj/index.rdf', 
 'http://delong.typepad.com/sdj/rss.xml']