Como Descobrir RSS Feeds para uma determinada URL
Pergunta
Eu recebo uma URL a partir de um usuário.Eu preciso saber:
a) é o URL válido feed RSS?
b) se não há um válido de alimentação associado a essa URL
usando PHP/Javascript ou algo semelhante
(Ex. http://techcrunch.com falha de um), mas b) deve retornar o seu feed RSS)
Editar:Ver o meu responder abaixo
Solução
Encontrei algo que eu queria:
Google AJAX API de Alimentação tem uma carga de alimentação de pesquisa e função de alimentação (Docs aqui).
a) Carga de alimentação fornece a alimentação (e feed de status) em JSON
b) Pesquisa de alimentação fornece o RSS feed para uma determinada URL
Há também um encontrar o feed função de pesquisa para RSS feeds com base em uma palavra-chave.
O planejamento para usar esse com o JQuery $.getJSON
Outras dicas
O Zend Feed de classe do Zend framework pode analisar automaticamente uma página da web e lista os feeds disponíveis.
Exemplo:
$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
Este link irá permitir que você para validar o link contra o RSS/Atom especificações de utilizar o W3C especificações, mas requer que você insira manualmente o url.
Há um número de maneiras de fazer isso programaticamente, dependendo da sua escolha de linguagem em PHP, analisar o arquivo como XML válido é uma boa maneira de começar, e depois compare-as relevantes DTD.
Para b), se o link não é um feed, você pode analisá-lo e olhar para um determinado feed no <head> seção da página, em busca de um link cujo tipo é "application/rss+xml", e.g:
<link rel="alternate" title="RSS Feed"
href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />
Este tipo de ligação é o utilizado pela maioria dos navegadores para "auto-descoberta" feeds (fazendo com que o ícone de RSS para aparecer na sua barra de endereços)
a) Recuperá-la e tentar analisá-lo.Se você pode analisá-lo, é válido.
b) Testar se é um documento HTML (servidor de envio text/html
) O MIME-type.Se, então, executá-lo através de um analisador de HTML e procure por <link>
elementos com RSS feed relações.
Para Perl, há Alimentação::Encontrar , que não automatizar a descoberta de sindicação de feeds da página da web.A utilização é bastante simplicistic:
use Feed::Find;
my @feeds = Feed::Find->find('http://example.com/');
Ele tenta primeiro o link
etiquetas e, em seguida, verifica o a
tags para arquivos com o nome .rss
e algo como isso.
Você está fazendo isso em um idioma específico, ou apenas quer detalhes sobre a especificação RSS?
Em geral, a olhar para o XML prólogo:
<?xml version="1.0" encoding="UTF-8"?>
seguido por um <rss> elemento, mas você pode querer para validá-lo como XML, totalmente validá-lo contra um DTD, ou verificar que, por exemplo, cada URL referido é válido, etc.Mais detalhes iria ajudar.
ATUALIZAÇÃO:Ah - PHP.Eu encontrei esta biblioteca para ser bastante úteis: MagpieRSS