SimplePie: Parser RSS o Atom

SimplePie es una librería PHP que te permite leer rápidamente y parsear Feeds del tipo RSS o Atom. Todo ello unificado en un solo objeto de forma que para el usuario es igual leer RSS o Atom (en cualquiera de sus versiones) sin cambiar ninguna linea de código.

simplepie.png

Este articulo esta desactualizado pues la librería SimplePie tiene una nueva versión, pueden leer el articulo actualizado en: Tutorial de SimplePie

Sucede que hay varios formatos para los Feeds, RSS y Atom por ejemplo y entre ellos hay RSS 0.91, RSS 1.0, RSS 2.0, Atom 0.3, 1.0, todos ellos con una forma diferente de representar la información que brindan, entonces hacer un lector de Feeds (Algo mas genérico que un lector de RSS) es mas complicado pues tiene que ser compatible con todos estos formatos. Allí es donde entra SimplePie, pues te permite leer, hacer cache y parsear Feed de manera transparente, se encarga de verificar el formato y de obtener la información que tu deseas.

Utilización

Veamos el uso de esta librería para hacer un parser en PHP. El primer paso es descargar SimplePie el archivo con las fuentes de SimplePie. El siguiente paso es crear copiar el archivo simplepie.inc del archivo comprimido que hemos descargado a la carpeta donde hagamos nuestro nuevo proyecto, seguidamente creamos un archivo llamado reader.php donde crearemos nuestro parser de Feeds.

Entonces adjuntamos simplepie a nuestra página PHP con la función require.

Podemos ver una referencia completa de todas las funciones que nos brinda SimplePie en: http://simplepie.org/docs/reference/. El siguiente paso es crear un objeto del tipo SimplePie el cual lo utilizaremos para leer el feed.

$vfeed = new SimplePie();

Luego definimos la ruta del feed que vamos a leer, y llamamos a la función init() encargada de iniciar la lectura del feed. Adicionalmente llamamos a una función para tener compatibilidad de tipos de codificación de caracteres.

$vfeed = new SimplePie();
$vfeed->feed_url("http://wordpress.org/development/feed/");
$vfeed->init();
$vfeed->handle_content_type();

Entonces el siguiente paso es obtener la información del feed:

echo "

" . $vfeed->get_feed_title() . "

"; echo $vfeed->get_feed_link() . "

";

Finalmente escribimos los posts, para ello obtenemos la cantidad de posts en el feed y hacemos un bucle FOR para leer todos los posts.

$vmax = $vfeed->get_item_quantity();
for ($x = 0; $x < $vmax; $x++) {
	$vitem = $vfeed->get_item($x);
	echo "" . $vitem->get_title(). "
"; echo $vitem->get_link() . "

"; echo $vitem->get_description() . "

"; echo "
"; }

Uniendo todo el código tenemos:




unijimpe Feed Parser


feed_url("http://wordpress.org/development/feed/");
$vfeed->init();
$vfeed->handle_content_type();
echo "

" . $vfeed->get_feed_title() . "

"; echo $vfeed->get_feed_link() . "

"; $vmax = $vfeed->get_item_quantity(); for ($x = 0; $x < $vmax; $x++) { $vitem = $vfeed->get_item($x); echo "" . $vitem->get_title(). "
"; echo $vitem->get_link() . "

"; echo $vitem->get_description() . "

"; echo "
"; } ?>

El resultado de este ejemplo es reader.php donde podemos ver que ha obtenido los datos del blog de wordpress.org. Ahora con un poco mas de tiempo se le agregan estilos, una tabla para alinear los textos y un formulario para ingresar la dirección del feed que deseamos leer y obtendremos un Lector de Feeds.

simplepie-reader.gif

Finalmente y como siempre dejamos los archivo fuente del ejemplo para que puedas practicar e investigar mas y puedas crear tu propio lector de Fees personalizado.

Comentarios Total 15 comentarios


[…] En el lado del servidor tendremos que implementar un lector RSS en php, lo cual gracias a la clase simplepie y al tutorial del blog unijimpe esta tarea es más que sencilla. Ahora solo nos queda aprender a manejar el dom xml de los widgets para presentar en este formato los datos que recibimos del servidor en formato JSON. […]


[…] SimplePie: Parser RSS o AtomSimplePie es una librería PHP que te permite leer rápidamente y parsear Feeds del tipo RSS o Atom. Todo ello unificado en un solo objeto de forma que para el usuario es igual leer RSS o Atom (en cualquiera de sus versiones) sin cambiar ninguna linea……………….Read more fuente related news here……. […]

Buscador Youtube con PHP » unijimpe
Publicado: 01/09/2007 11:07 am

[…] Mostrando la lista de vídeos Como el resultado del API es un feed, podemos utilizar SimplePie, el cual es un parser de Feeds hecho en PHP del cual hemos comentado en SimplePie: Parser RSS o Atom. […]

tikitakfire
Publicado: 05/11/2007 10:07 am

hola! muy buena la guia, me sirve para el planeta que quiero hacer :D una pregunta: hay alguna forma de hacer que aparezcan links para ver entradas anteriores? como en wordpress?

aca463
Publicado: 10/12/2007 6:00 am

Muchas gracias por la información.
Os lo curráis muchisimo.
Saludos!

MijT
Publicado: 05/06/2008 7:31 pm

Quería hacer una consulta, yo tengo una tabla en mysql en la que guardo URLs de feeds y lo que me gustaría es hacer una consulta a dicha tabla y que me vaya imprimiendo los posts que se van agregando a dichos feeds con el título, descripcion, autor, categoría y fecha que fue agregada la noticia.

Estuve usando la librería MagPie RSS y me anduvo bien hasta que agregué la opción de mostrar las categorías a la que pertenecen las noticias y me di con la sorpresa que las devuelve de la forma: Categoria1Categoria2CategoriaN de modo que es imposible separarlas, así que seguí buscando librerías hasta que di con esta, pero no sé como podría hacer eso que deseo.

Espero me puedas echar una mano, gracias de antemano.

Saludos.

Bleyder
Publicado: 16/04/2009 12:29 pm

El ejemplo de este artículo es para versiones antiguas de SimplePie. Sin quitar mérito a lo que se ha explicado aquí, es mejor ir a la siguiente página para obtener un ejemplo actual de la última versión de SimplePie:

http://simplepie.org/wiki/setup/sample_page

mauri
Publicado: 06/05/2009 6:57 pm

gracias Bleyder!

mauri
Publicado: 06/05/2009 7:08 pm

igual no entiendo nada. si alguien puede explicar en español Graciass

John Castillo
Publicado: 24/09/2009 4:26 pm

Hola mi pregunta es si con este lector uno lo puedo limitar, osea que solo me muestre no se 5 resultados en lugar de todos

ritvar
Publicado: 08/06/2010 8:12 am

como hago para que aparezcan esos datos en una tabla html?
algo asi:
nombre
edad

gracias

Angel
Publicado: 27/06/2010 12:48 pm

Tengo una duda sobre si se pueden coger feeds de varias páginas distintas y que se ordenen según fecha u otro criterio de manera que puedan aparecer combinados.

Gracias.

unijimpe
Publicado: 27/06/2010 1:34 pm

Para unir varios Feeds en uno solo y mostrarlos de acuerdo al orden de publicación debes pasar un array con las rutas de los feeds al parámetro set_feed_url, Para mayor información puedes leer Sort multiple feeds by time and date.

SAM
Publicado: 16/01/2011 2:39 pm

hola quisiera saber como podría paginar los resultado de los feed obtenidos… si se puede paginar aquellos resultados de la librería simplepie

Buscador de Videos con PHP | ElarCorp
Publicado: 28/07/2014 12:11 pm

[…] Como el resultado del API es un feed, podemos utilizar SimplePie, el cual es un parser de Feeds hecho en PHP del cual hemos comentado en SimplePie: Parser RSS o Atom. […]

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)