Как найти RSS-каналы для заданного URL-адреса
Я получаю URL-адрес от пользователя. Мне нужно знать:
a) есть ли URL-адрес действительного RSS-канала?
б) если нет, то есть правильный канал, связанный с этим URL
используя PHP/Javascript или что-то подобное
(Пример http://techcrunch.com не работает а), но b) вернет свой RSS-канал)
Изменить: см. мой ответ ниже
Ответы
Ответ 1
Нашел то, что я хотел:
Google AJAX Feed API поддерживает функцию загрузки и поиска (Docs здесь).
a) Загружать фид предоставляет фид (и состояние подачи) в JSON
b) Канал поиска предоставляет канал RSS для заданного URL
Theres также функция поиска, которая ищет RSS-каналы на основе ключевого слова.
Планирование использования этого с помощью JQuery $.getJSON
Ответ 2
класс Zend Feed Zend-framework может автоматически анализировать веб-страницу и перечислять доступные каналы.
Пример:
$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
Ответ 3
Эта ссылка позволит вам проверить связь с спецификациями 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 появится в адресной строке)
Ответ 4
a) Извлеките его и попробуйте разобрать его. Если вы можете его проанализировать, это действительно.
b) Проверьте, является ли это HTML-документ (отправленный сервером text/html
) MIME-тип. Если это так, запустите его через парсер HTML и найдите элементы <link>
с отношениями RSS-каналов.
Ответ 5
Для Perl существует Feed:: Find, который автоматизирует обнаружение фидов синдикации с веб-страницы. Использование довольно простое:
use Feed::Find;
my @feeds = Feed::Find->find('http://example.com/');
Сначала он пробует теги link
, а затем сканирует теги a
для файлов с именем .rss
и что-то в этом роде.
Ответ 6
Выполняете ли вы это на определенном языке или просто хотите узнать подробности спецификации RSS?
В общем, найдите пролог XML:
<?xml version="1.0" encoding="UTF-8"?>
за которым следует <rss> элемент, но вы можете проверить его как XML, полностью проверить его на DTD или проверить, что, например, каждый URL, о котором идет ссылка, действителен и т.д. Более подробная информация поможет.
ОБНОВЛЕНИЕ: Ах - PHP. Я нашел эту библиотеку очень полезной: MagpieRSS