Вопрос

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

использование PHP / Javascript или чего-то подобного

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

Редактировать:Видишь мой ответ ниже

Это было полезно?

Решение

Нашел то, что мне было нужно:

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

а) Подача нагрузки предоставляет канал (и статус канала) в формате JSON

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

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

Планирую использовать это с $.getJSON от jQuery

Другие советы

Тот Самый Класс подачи Zend из числа Zend-фреймворк может автоматически анализировать веб-страницу и составлять список доступных каналов.

Пример:

$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).

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

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

Для Perl существует Канал::Найти , который автоматизирует обнаружение каналов синдикации с веб-страницы.Это использование довольно упрощенное:

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

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

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

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

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

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

Обновить:Ах, PHP.Я нахожу эту библиотеку довольно полезной: Сорокапятки

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top