Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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