2010-02-11 11 views
35

Sto cercando una buona libreria in python che mi consenta di analizzare i feed RSS. Qualcuno ha usato il feedparser? Qualche feedback?Libreria di parser di feed RSS in Python

+5

Il download e la prova di feedparser richiederebbero 5 minuti. –

+3

Scaricare e provare feedparser può richiedere solo 5 minuti, ma ci vorrebbe molto più tempo per usarlo a sufficienza per formarci un'opinione utile e affidabile come altri su SO. 5 minuti di utilizzo proverebbero solo che può essere installato e gestire il caso d'uso principale. – Trindaz

risposta

49

Utilizzando feedparser è una scelta molto migliore rispetto a rotazione con il proprio minidom o BeautifulSoup.

  • Normalizza le differenze tra tutte le versioni di RSS e Atom in modo da non dover disporre di codice diverso per ogni tipo.
  • È utile rilevare diversi formati di data e altre variazioni nei feed.
  • Segue automaticamente i reindirizzamenti HTTP.
  • Elimina i contenuti HTML.
  • Ha il supporto per ETag e le intestazioni dell'ultima modifica in modo da poter vedere se il feed è cambiato semplicemente scaricando l'header HTTP e non l'intero avanzamento.
  • Ha il supporto per i feed autenticati.
  • Ha il supporto per i proxy HTTP.

Come altri hanno già detto, basta provare. È come 2 linee di codice per analizzare un feed. La mia unica lamentela è che utilizza solo dizionari come modello di dati e alcuni attributi possono mancare nel dizionario se non fossero nel feed, quindi è necessario verificarlo nel proprio codice. Ma la documentazione è molto chiara su quali attributi saranno sempre nel dizionario e quali potrebbero essere mancanti.

Infine, posso garantire per questo, come ho scritto un'applicazione che lo utilizza. Vedi qui: http://www.feednotifier.com/

+0

Grazie per la risposta! .. Sì, è una documentazione così bella e ben definita! .. facile da usare. !! Anche il tuo feed notifier è interessante! –

+0

Sai di una libreria che prende l'output di feedparser e può trasformarlo in un feed? –

+0

Attualmente c'è un problema che mi dà fastidio: feedparser sembra fallire su elementi "media:" nei feed di Flickr. È veramente noioso. Ho appena presentato un problema, speriamo di avere qualche soluzione abbastanza presto. – dguaraglia

1

http://www.feedparser.org/

Primo colpo su G.

+0

Beh, l'ha menzionato nella domanda ... –

+0

In ogni caso, avete qualche idea diversa dal feedpurser che è facile da usare? –

+0

@ rahman.bd no, feedparser è troppo buono, a nessuno interesserebbe un'alternativa. –

1

In risposta alla vostra follow-up. Potresti usare BeautifulSoup, ma feedparser è molto più orientato verso la gestione degli RSS.

Non Snark - ma hai letto feedparsers documentation? Non so come potrebbe essere più semplice da usare.

+2

Per il beneficio degli altri: feedparser.org è stato rimosso da Mark Pilgrim. Lo renderò disponibile come parte della prossima versione. –

0

Se volete un'alternativa, provare xml.dom.minidom. Come "Django è Python", "RSS is XML".

+0

Nessun buon motivo per adottare questo approccio quando esiste feedparser. Dovresti gestire le differenze tra RSS e Atom, feed malformati, vari formati data/timestamp, ecc. – FogleBird

10

Feedparser è molto potente, configurabile e sooo facile da usare. Una curva di apprendimento molto amichevole, se non del tutto.

Esempio

Programatically determinare il numero di risposte alla tua domanda è:

easy_install feedparser 
python -c 'import feedparser; print len(feedparser.parse("http://bit.ly/c785aj")["entries"])' 
+0

Puoi utilizzare .entries anziché ["entries"] poiché feedparser utilizza un dizionario personalizzato che consente l'accesso agli attributi. Più facile da digitare e leggere. – FogleBird

+0

Grazie per l'esempio. @FogleBird Grazie per la spiegazione. –

0

lo consiglio vivamente feedparser.

1

So che questo è un argomento molto vecchio, ma per quello che vale, stavo usando feedparser (Universal Feed parser) versione 5.1.3 e ho recentemente modificato a speedparser (0.1.8) per motivi di prestazioni. Ha praticamente le stesse interfacce, ma funziona più velocemente.

Lo sto usando per un'applicazione amatoriale Python-for-Android e speedparser viene eseguito circa 5 volte più veloce nei miei feed.