2010-02-11 36 views
35

Estoy buscando una buena biblioteca en python que me ayude a analizar fuentes RSS. ¿Alguien ha usado feedparser? ¿Cualquier retroalimentación?Biblioteca de analizador de fuentes RSS en Python

+5

La descarga y la prueba de feedparser demorarían 5 minutos. –

+3

La descarga y prueba de feedparser puede demorar solo 5 minutos, pero tomaría mucho más tiempo usarla lo suficiente como para formar una opinión útil y confiable como otros en SO. 5 minutos de uso solo probarían que se puede instalar y manejar el caso de uso principal. – Trindaz

Respuesta

49

Usando feedparser es una opción mucho mejor que rodar con su propio minidom o BeautifulSoup.

  • Normaliza las diferencias entre todas las versiones de RSS y Atom para que no tenga que tener un código diferente para cada tipo.
  • Es bueno detectar diferentes formatos de fecha y otras variaciones en los feeds.
  • Sigue automáticamente los redireccionamientos HTTP.
  • Sanitiza el contenido HTML.
  • Tiene soporte para encabezados ETag y Last-Modified para que pueda ver si el feed ha cambiado simplemente descargando el encabezado HTTP y no todo el feed.
  • Tiene soporte para feeds autenticados.
  • Tiene soporte para proxies HTTP.

Como han mencionado otros, inténtelo. Es como 2 líneas de código para analizar un feed. Mi única queja es que solo usa diccionarios como su modelo de datos y algunos atributos pueden faltar en el diccionario si no están en el feed, por lo que debe verificarlo en su código. Pero la documentación es muy clara sobre qué atributos estarán siempre en el diccionario y cuáles pueden faltar.

Finalmente, puedo responder por ello, ya que he escrito una aplicación que lo usa. Vea aquí: http://www.feednotifier.com/

+0

¡Gracias por su respuesta! ... ¡Sí, es una documentación tan genial y bien definida! ... ¡fácil de usar! ¡Tu notificador de feed también es interesante! –

+0

¿Conoces una biblioteca que tome el resultado del feedparser y pueda convertirlo en un feed? –

+0

Actualmente hay un problema que me molesta: feedparser parece fallar en los elementos 'media:' en los feeds de Flickr. Es muy molesto. Acabo de archivar un problema, esperemos que obtenga alguna solución lo suficientemente pronto. – dguaraglia

1

http://www.feedparser.org/

primer golpe en G.

+0

Bueno, lo mencionó en la pregunta ... –

+0

De todos modos, ¿tienen alguna idea sobre otro que no sea el feedpurser, que es fácil de usar? –

+0

@ rahman.bd no, feedparser es demasiado bueno, a nadie le importaría una alternativa. –

1

En respuesta a su seguimiento. Podría usar BeautifulSoup, pero el feedparser está mucho mejor orientado a la entrega de RSS.

No snark, pero ¿has leído los lectores de información documentation? No sé cómo podría ser más simple de usar.

+2

En beneficio de los demás: feedparser.org ha sido eliminado por Mark Pilgrim. Lo pondré a disposición como parte del próximo lanzamiento. –

0

Si quieres una alternativa, prueba xml.dom.minidom. Me gusta "Django es Python", "RSS es XML".

+0

No hay una buena razón para tomar este enfoque cuando existe el generador de información. Tendría que manejar las diferencias entre RSS y Atom, feeds mal formados, varios formatos de fecha/hora, etc. – FogleBird

10

Feedparser es muy potente, configurable y muy fácil de usar. Una curva de aprendizaje muy amigable, en todo caso.

Ejemplo

Programatically determinar el número de respuestas a su pregunta tiene:

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

Puede usar .entries en lugar de ["entries"] ya que feedparser usa un diccionario personalizado que permite el acceso de atributos. Más fácil de escribir y leer. – FogleBird

+0

Gracias por el ejemplo. @FogleBird Gracias por la explicación. –

0

I Recomiendo encarecidamente feedparser.

1

Sé que este es un tema muy antiguo, pero por lo que vale, estaba usando feedparser (Universal feed parser) versión 5.1.3 y recientemente cambié a speedparser (0.1.8) por razones de rendimiento. Tiene casi las mismas interfaces, pero funciona más rápido.

Lo estoy usando para una aplicación amateur Python-for-Android y el velocesificador funciona aproximadamente 5 veces más rápido en mis fuentes.

Cuestiones relacionadas