php - nombre - Cómo descubrir feeds RSS para una URL determinada
rss mailchimp wordpress (6)
Obtengo una URL de un usuario. Necesito saber:
a) ¿la URL es una fuente RSS válida?
b) si no hay un feed válido asociado con esa URL
usando PHP / Javascript o algo similar
(Ej. Http://techcrunch.com falla a), pero b) devolvería su fuente RSS)
Editar: ver mi respuesta a continuación
¿Estás haciendo esto en un idioma específico o solo quieres detalles sobre la especificación RSS?
En general, busque el prólogo XML:
<?xml version="1.0" encoding="UTF-8"?>
seguido por un elemento <rss>, pero es posible que desee validarlo como XML, validarlo completamente contra una DTD o verificar que, por ejemplo, cada URL a la que se hace referencia es válida, etc. Más detalles ayudarían.
ACTUALIZACIÓN : Ah - PHP. Encontré que esta biblioteca es bastante útil: MagpieRSS
a) Recuperarlo e intentar analizarlo. Si puedes analizarlo, es válido.
b) Pruebe si se trata de un documento HTML (servidor enviado text/html
) tipo MIME. Si es así, ejecútelo a través de un analizador HTML y busque elementos <link>
con relaciones de alimentación RSS.
Este enlace le permitirá validar el enlace contra las especificaciones de RSS / Atom usando las especificaciones W3C, pero requiere que ingrese manualmente la url.
Hay varias formas de hacer esto programáticamente, dependiendo de su elección de idioma: en PHP, analizar el archivo como XML válido es una buena manera de comenzar y luego compararlo con el DTD correspondiente .
Para b), si el enlace en sí no es un feed, puede analizarlo y buscar un feed especificado en la sección <head> de la página, buscando un enlace cuyo tipo sea "application / rss + xml", por ejemplo :
<link rel="alternate" title="RSS Feed"
href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />
Este tipo de enlace es el utilizado por la mayoría de los buscadores para "autodescubrir" los feeds (haciendo que el ícono de RSS aparezca en la barra de direcciones)
Para Perl, existe Feed :: Find , que automatiza el descubrimiento de feeds de sindicación desde la página web. El uso es bastante simple:
use Feed::Find;
my @feeds = Feed::Find->find(''http://example.com/'');
Primero prueba las etiquetas de link
y luego escanea las etiquetas a para archivos llamados .rss
y algo así.
Encontré algo que quería:
La API de Google AJAX Feed tiene una función de alimentación de carga y búsqueda de alimentación (Docs aquí ).
a) La alimentación de carga proporciona la alimentación (y el estado de alimentación) en JSON
b) Búsqueda de búsqueda proporciona la fuente RSS para una URL determinada
También hay una función de búsqueda de resultados que busca fuentes RSS basadas en una palabra clave.
Planea usar esto con $ .getJSON de JQuery
La clase Zend Feed de Zend-framework puede analizar automáticamente una página web y enumerar las fuentes disponibles.
Ejemplo:
$feedArray = Zend_Feed::findFeeds(''http://www.example.com/news.html'');