Как найти RSS-каналы для заданного URL-адреса

Я получаю URL-адрес от пользователя. Мне нужно знать:
a) является ли URL-адрес действительным RSS-каналом?
б) если нет, то есть правильный канал, связанный с этим URL-адресом

используя PHP / Javascript или что-то подобное

(Например, http://techcrunch.com не работает), но b) вернет свой RSS-канал)

Изменить: см. Мой ответ ниже

Related of "Как найти RSS-каналы для заданного URL-адреса"

Нашел то, что хотел:

API API AJAX от Google имеет функцию загрузки и поиска (Docs здесь ).

a) Загрузочная подача обеспечивает подачу (и состояние подачи) в JSON

b) Канал поиска предоставляет канал RSS для заданного URL-адреса

Theres также функция поиска, которая ищет RSS-каналы на основе ключевого слова.

Планирование использования этого с помощью $ .getJSON JQuery

Класс Zend Feed Zend-framework может автоматически анализировать веб-страницу и перечислять доступные каналы.

Пример:

$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html'); 

Эта ссылка позволит вам проверить связь с спецификациями RSS / Atom с использованием спецификаций W3C, но вам нужно вручную ввести URL-адрес.

Существует несколько способов сделать это программно, в зависимости от вашего выбора языка – в PHP, разбора файла, поскольку правильный XML – это хороший способ начать, а затем сравнить его с соответствующим DTD .

Для b), если сама ссылка не является фидом, вы можете проанализировать ее и найти указанный канал в разделе <head> страницы, ища ссылку, тип которой – «application / rss + xml», например :

 <link rel="alternate" title="RSS Feed" href="http://www.example.com/rss-feed.xml" type="application/rss+xml" /> 

Этот тип ссылки используется большинством браузеров для «автоматического обнаружения» каналов (в результате чего значок RSS появится в адресной строке)

a) Извлеките его и попробуйте разобрать его. Если вы можете его разобрать, это действительно так.

b) Проверьте, является ли это HTML-документ (сервер отправил text/html ) MIME-тип. Если это так, запустите его через парсер HTML и найдите элементы <link> с отношениями RSS-каналов.

Для Perl существует Feed :: Find , который автоматически автоматизирует обнаружение фидов синдикации с веб-страницы. Использование довольно простое:

 use Feed::Find; my @feeds = Feed::Find->find('http://example.com/'); 

Сначала он пробует теги link и затем сканирует теги для файлов с именем .rss и что-то в этом роде.

Вы делаете это на определенном языке, или вам просто нужны подробности о спецификации RSS?

В общем, ищите пролог XML:

 <?xml version="1.0" encoding="UTF-8"?> 

за которым следует элемент <rss>, но вы можете проверить его как XML, полностью проверить его на DTD или проверить, что, например, каждый URL-адрес является действительным и т. д. Более подробная информация поможет.

ОБНОВЛЕНИЕ : Ах – PHP. Я нашел эту библиотеку довольно полезной: MagpieRSS