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

Давно собирался написать об этом сервисе
.
Кратко описать его возможности можно тремя пунктами:
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 ленту).
В общем, у вас должно получиться что-то похожее на этот рисунок.
Сохраняем трубу «Save» и смотрим результат – «Run pipe…».
В открывшемся окне вы увидите результат работы вашей «трубы», а также ссылку на RSS ленту (More options -> Get as RSS).
Как видите работать с Yahoo pipes несложно. Конечно, этот пример элементарный и далеко не законченный, но даже в таком виде мы уже решили задачу.
В следующих выпусках я продолжу рассказывать об этом сервисе.
До встречи!
Спонсор статьи:
Программное обеспечение для создания собственных безопасных e-mail рассылок
Понравилась статья? Подписывайтесь на продолжение
!
Опубликовано в Web разработка, Yahoo Pipes Комментарии (47) »
Комментарии (47)
Вы можете отслеживать обсуждение записи с помощью RSS 2.0 ![]()
Вы также можете оставить комментарий, или трекбек с Вашего сайта.









Очень хороший пост. Добавила Ваш блог в закладки. Есть много ценных и полезных мыслей, которые я применю на деле. Но понадобится еще время, чтобы осмыслить информацию. Даже сейчас, когда после прочтения текста Вашего поста, в тот момент, когда пишу комментарий, я думаю, о тех вещах, смысл которых мне теперь совсем по другому видится. Эх, что за день сегодня – полезный день.
Мде.. Предыдущий комментатор вверг меня в шок своей выдумкой на бредоспам =)
Яху пайпс хорошо для блогоферм всяких юзать, т.е. тем кто сплогами занимается
Предыдущий комментатор – спамер. Совсем недавно у кого-то читал что были такие же комментарии. Судя по всему, этот текст проходит через фильтры и даже при ручной модерации не всегда понятно, что это спам.
Хм… никогда не пробовал. Нужно протестить…
Вот сначало был вопрос о Pipes, но дойдя до комментов я его забыл и теперь мне интересно что же написал «предыдущий комментатор»
Не проблема
Комментарий вернул, без ссылки конечно.
Лол ))
Коммент жжет.
А касательно поста — спасибо. Кстати, как feedburner такой фид принимает, нормально?
Честно говоря, не пробовал.
В любом случае у них довольно подробные сообщения об ошибках
Как известно, у сайтов на uCoz нет общего фида. Есть только отдельные фиды на каждый модуль. Задача стояла такая – организовать емейл-рассылку сайта при помощи Feedburner. Однако, для этого нужен один общий фид. Решил проблему с помощью Yahoo pipes, склеив фиды сайта в один общий (Fetch Feed во вкладке Sources). Его и скормил Feedburner, правда тот поругался несколько раз, но в итоге (через пару часов ослиного упрямства) слопал такой фид и теперь на моем сайте эта подписка реализована. Если любопытно, ссылка на моем имени.
Я не понял точно, что именно Feedburner не нравилось в моем фиде, но фид нормально читался любыми ридерами, в том числе и Google Reader – я специально проверил. Похоже, что фид просто получился монстрообразен и огромен по содержанию. Feedburner явно не рассчитан на такие размеры и ему потребовалось время, чтобы пропинговать этот фид полностью. Кстати, пинговал его вручную, в Feedburner есть ссылка для этой функции.
Так что, по поводу "нормальности" делайте выводы сами. Худо-бедно – да, принимает. Смотря какой фид получается на выходе.
Просьба к автору. Не могу сделать фид к своему статичному сайту, на html (mydns.pp.ua). Там всего две странички. Хочу "толкнуть" его через пингатор (ping.xby.ru), но для этого нужон фид. Не подскажите ли, как его создать при помощи Yahoo pipes? Заранее благодарю.
Попробуйте так.
1) Два блока fetch page для каждой из страниц
2) С помощью union объединить данные
3) И с помощью Regex вырезать из результата нужные куски.
Спасибо большое. Много слышал про этот сервис, но никак не знал как подступиться. Теперь есть повод
Буду ждать продолжения.
Ништяк а искал где толково то написано о настройке этих труб…
Нужно ли "огород городить", когда есть такие службы как http://www.revisor.com.ua/. Таких служб много. Есть русскоязычные и другие.
Возможности Yahoo pipes не ограничиваются уведомлениями об изменениях на сайте. Я просто пример такой привел. Посмотрите другие статьи из этого раздела, думаю вопрос исчезнет
Вот вы привели в примере:
А что это за конструкция? Что за язык?
Просто читаю пример и для меня это пока что калиберда…
Проясните пожалуйста.
Это параметры настройки блока.
Посмотрите последний скриншот блок Regex. Жирным я выделил параметры, которые нужно ввести в текстовые поля. Значения некоторых полей можно выбрать из выпадающего списка, некоторые (например, регулярные выражения) нужно вводить самому.
Вообще-то лучше всего поэкспериментировать с сервисом. Многие вещи сразу станут понятнее.
Наверно я не совсем точно выразился.
Я имею ввиду, как вы "подобрали" эти выражения?
Стоит ли копать в сторону Перла и его регулярный выражений?
Да, стоит
Перл учить не обязательно, а вот регулярные выражения нужны. Без них ничего кроме простейших операций выполнить не получится.
Ну, пробежав по нескольким книгам по диагонали, увидел, что перл может парсить страницы
А это много стоит
Чтобы парсить страницы не обязательно использовать perl. Например, есть такая программка cURL с которой можно работать из разных языков (я как-то приводил пример для PHP). Она позволяет имитировать работу браузера и возвращает страницу в виде обычной текстовой строки.
После этого можно парсить страницу как угодно.
IMHO, curl немного не то. но прислушаюсь к вашему мнению.
В PHP есть функция fopen, которая позволяет получить web страницу.
Код будет выглядеть примерно так
$handle = @fopen("http://www.sitename.com", "rt");
$source_code = fread($handle,9000);
Но curl удобнее и мощнее, особенно если вам нужно обрабатывать редиректы, cookies, отправлять заголовки, т.е. имитировать поведение браузера.
Добрый вечер!
Очень интересная ссылка,сидел целый вечер, но почему то у меня не получилось. Посмотрите пожалуйста. Может мой сайт не подходит.
С уважением Сергей.
Здравствуйте!
А о каком сайте речь?
Добрый день.
Извините не написал вот ссылка на сайт:http://sergeikobinskij.ucoz.com/
Я плохо разбираюсь в этих вопросах, но хотел бы на сайте создать свою ленту новостей. Подскажите это реально. На форум писал там толком не объяснили.
Если это сложно то и не нужно. Я не обижусь. Спасибо Вам… Вчера долго изучал и пробовал но что то пишет ошибку…
Извините что отрываю у Вас время…
Сергей.
По-моему RSS у вас нормально работает
http://sergeikobinskij.ucoz.com/blog/rss
Правда работает только для блога. На главной странице есть иконка в адресной строке браузера, но когда я попытался ее открыть, получил сообщение "У вас нет прав для просмотра этого ресурса". Скорее всего дело в настройках, но с uCoz'ом я не работал, поэтому точно не знаю.
Кстати есть скринкаст о подключении FeedBurner к uCoz, может в нём будет что-то интересное.
Спасибо Вам…
Сейчас посмотрю. А мне Яндекс пишет,что ленты нет…Спасибо
Яндекс пишет, что ленты нет скорее всего потому, что не может найти её на главной. Попробуйте вручную указать адрес ленты.
Спасибо…
поставил на главной-Яндекс нашел-спасибо…
Добрый день.
Владимир подскажите где можно найти материалы для чайников по смене шаблонов адаптированных под uCoz, хочу поменять не получается, на форуме все продвинутые, там я ничего не понимаю..
Спасибо.
С уважением Сергей.
Я не работал с uCoz, поэтому к сожалению посоветовать ничего конкретного не могу.
Исходя из собственного опыта могу посоветовать почитать книги по html, css. Это, конечно, очень долго, но дает 100% результат и не только для тем uCoz
Если нужно срочно, то вариантов 2: искать готовые примеры и переделывать под свой сайт или искать человека, который может помочь.
Добрый вечер Владимир.
Обращаюсь к Вам как к специалисту. У меня был сайт:http:www.globus-ks.ru платный хостинг на WEB-13. На один год. Я от туда ушел. Димен и доменное имя за мной остались или нет и могу ли я припарковать свой сайт с uCoz или опять нужно платить и продолжать….
Спасибо.
Когда вы уходили год закончился или нет? Обычно домен оплачивается на год и после этого его нужно продлевать, т.е. платить за следующий год.
На данный момент этот домен зарегистрирован на AGAVA Software Ltd. Если это ваш регистратор вам нужно связаться с тех поддержкой и запросить перенос домена. Тут возникает вопрос куда переносить? Вариантов два: либо использовать бесплатные DNS, либо платные. (Если тут возникли вопросы посмотрите статью "Как самостоятельно и бесплатно зарегистрировать домен. Типичные ошибки.", возможно на некоторые я уже отвечал.)
Насчет парковки к uCoz я не знаю, т.к. с этим сервисом не работал. Вполне возможно, что они предоставляют эту услугу.
Спасибо.
Да это мой домен-год кончился и нужно было продлить..Спасибо…
спасибо за урок, все получилось, но вот вопрос такой
в статьях много не нужных мне ссылок можно ли каким то образом их убрать?
пробовал через фильтр, но он убирает не только тег но и содержимое тега
Нужно использовать блока Regex. С помощью регулярного выражения вы сможете выбрать все теги, главное правильно его составить.
Должно подойти что-то вроде
<a.*?>а если так?
||такНа регулярное выражение не похоже
|код не выделялся и не вставлялся
но так картинки вырезаются
почему то не могу вставить пример кода
попробую без кода |
вот так я сделал но вырезаются также картинки
моя труба кому интересно
можно критиковать
WP автоматически убирает все теги, кроме разрешенных, и спецсимволы.
Если нужно оставить картинки – исключите из РВ тег img
по подробнее расскажите а то я чего то не понял откуда икслючить тег
PB – регулярное выражение.
)
Т.е. вместо
<a.*?>использовать<(a|img).*?>(я имел ввиду "включите в РВ", sorry