In questo articolo vedremo come effettuare il parsing di un feed RSS remoto usando un modulo specifico di Python.
Il modulo feedparser è in grado di effettuare il parsing di diversi tipi di feed. Dopo aver attivato il nostro ambiente virtuale, possiamo installarlo come segue:
pip install feedparser
Questo modulo trasforma un feed RSS in un oggetto i cui attributi (o proprietà), corrispondono ai diversi elementi XML del feed stesso.
Possiamo usarlo in questo modo:
import feedparser
from datetime import datetime
def read_rss_feed(feed_url=None):
if feed_url is None:
return None
if not feed_url.startswith('https://'):
return None
output = []
rss_feed = feedparser.parse(feed_url)
entries = rss_feed.entries
date_fmt = '%a, %d %b %Y %H:%M:%S %Z'
for entry in entries:
title = entry.title
pubdate = entry.published
date = datetime.strptime(pubdate, date_fmt)
entry_date = date.strftime('%d/%m/%Y')
link = entry.link
output.append({
'title': title,
'link': link,
'date': entry_date
})
return output
La funzione appena definita usa l'URL del feed per invocare il metodo parse()
del modulo feedparser
. rss_feed
quindi è un oggetto i cui attributi, come abbiamo detto, rappresentano gli elementi del documento XML. Quindi entries
è una lista di oggetti contenente tutti gli elementi che marcano i post del feed RSS. Ciascuno di questi oggetti, a sua volta, dispone di attributi specifici che corrispondono ad altrettanti tag XML, come ad esempio title
e link
.
In pratica effettuiamo un loop tra i post e restituiamo una lista di dizionari in cui memorizziamo il titolo dele post, il suo URL e la data di pubblicazione formattata nel formato locale. Il formato RSS dispone di date standard, quindi è semplice specificare il formato di partenza nella variabile date_fmt
da usare in seguito nel metodo datetime.strptime()
.