Yahoo pipes. Cоздаем RSS ленту интересного сайта

Владимир | | Web разработка, Yahoo Pipes.

Логотип yahoo pipes
Давно собирался написать об этом сервисе 🙂 .

Кратко описать его возможности можно тремя пунктами:
1) получает данные по заданному адресу;
2) обрабатывает их;
3) преобразует результат в нужный формат (например, RSS ленту).

Но за этими пунктами скрываются огромные возможности!

Примечание. Их конкретный размер, естественно, зависит от ваших навыков в использовании сервиса 🙂

И вот тут и кроется настоящее преимущество Yahoo pipes. Он позволяет решить задачи, для которых обычно приходится писать специальную программу или скрипт.

Повторять документацию я не буду, а просто покажу конкретный пример.

Постоянные читатели, этого блога, наверное, в курсе, что я часто использую PHP фрэймворк CodeIgniter. И, естественно, я стараюсь отслеживать информацию о нем.

Но, к сожалению, не все блоги имеют RSS ленты, а без них быть в курсе обновлений нескольких десятков ресурсов просто не реально. Например, блог Тыманчи Ыргын. Автор опубликовал довольно подробное руководство по созданию блога с помощью CodeIgniter (из 7 частей), а RSS ленты – нет.

Попробуем решить эту проблему с помощью Yahoo pipes.

Прежде всего, проанализируем структуру блога. Все записи выводятся на главной странице в хронологическом порядке.

Допустим, мы просто хотим получать заголовок самой первой записи на странице. Чтобы его «вырезать» необходимо определить html разметку. Обычно, я для этих целей использую Firebug (плагин FireFox), но можно просто открыть страницу в режиме просмотра html.

Как и следовало ожидать, нужная нам информация находится между тегами <h1> и </h1>.

Теперь идем на Yahoo pipes, регистрируемся в системе (можно использовать существующий аккаунт Yahoo) и жмем кнопку «Create a pipe».

После этого, вы увидите окно конструктора «труб» («pipe» на английском означает «труба», «трубопровод»). В его правой части находится меню выбора блоков. Открываем вкладку «Sources» (обычно она открыта по-умолчанию) и перетягиваем блок «Fetch page» на рабочее поле (центральную часть окна).

Этот блок позволяет получить html страницу по ее адресу (URL). Кроме того, он позволяет вырезать часть из нее с помощью параметров «Cut content from» «to». Если эти значения не задавать, то в RSS ленту будет добавлена вся страница.

Мы установим такие значения параметров:
URL — http://erum.ru/
Cut content from — <h1>
to — </h1>.

Теперь наш блок будет работать следующим образом:
1) получит страницу;
2) найдет теги <h1> и </h1>;
3) вырежет текст, который находится между этими тегами.

Теперь нам нужно сформировать RSS ленту. Для этого нужно создать два поля (как минимум): title и link.

Для этого добавляем на рабочее поле блок Rename (находится в группе Operators). А в нем два параметра:

item.content copy as link
item.content rename title

И соединяем вход этого блока с выходом Fetch Page.

На данный момент на выходе блока Rename есть два параметра, которые полностью повторяют данные, полученные со страницы. Чтобы лента отображалась правильно, нам нужно вырезать ссылку и заголовок статьи из исходного текста.

Для этого добавляем блок Regex. Он позволяет преобразовывать данные с помощью регулярных выражений.

Создаем в нем два правила:

In item.title replace .*>(.*)</a>.* with $1
In item.link replace .*href\s*=\s*»?(.*?)».* with $1

Первое правило вырезает из текста заголовок статьи и присваивает его полю title. Второе – вырезает ссылку и присваивает ее полю link.

Теперь нам осталось соединить выход блока Regex с входом Pipe Output. Как несложно догадаться из названия последний блок формирует выходные данные (RSS ленту).

В общем, у вас должно получиться что-то похожее на этот рисунок.

Yahoo pipe для enum.ru (миниатюра)

Сохраняем трубу «Save» и смотрим результат – «Run pipe…».

В открывшемся окне вы увидите результат работы вашей «трубы», а также ссылку на RSS ленту (More options -> Get as RSS).

Как видите работать с Yahoo pipes несложно. Конечно, этот пример элементарный и далеко не законченный, но даже в таком виде мы уже решили задачу.

В следующих выпусках я продолжу рассказывать об этом сервисе.

До встречи!

Спонсор статьи:
Программное обеспечение для создания собственных безопасных e-mail рассылок