Yahoo Pipes FAQ

Дата: 16.01.2008
Рубрики: Разное |

Для новичков в Yahoo Pipes решил написать небольшой tutorial по работе с этим сервисом.

Для начала очень рекомендую хотя бы поверхностно изучить спецификацию RSS, без четкого понимания этих моментов сделать интересную трубу будет проблематично.

Начинать изучать сервис лучше всего с обзора готовых примеров. Следует понимать, что обработка всех блоков Yahoo Pipes идет последовательно “сверху вниз”. Данные, как вода, перетекают по трубам из одной “емкости” в другую, где с ними могут происходить какие-то преобразования.

При создании и отладке труб не надо забывать про встроенный Debugger – область внизу рабочего окна. В Debugger’е можно отслеживать все промежуточные данные и преобразование rss-потоков.

Рассмотрим наиболее полезные модули Yahoo Pipes.

1. Sources

Модули из раздела Sources предназначены для получения данных из внешних источников, например rss лент или результатов поиска некоторых сервисов.

Fetch Feed

Fetch Feed

Пожалуй, основной инструмент в Yahoo Pipes. Получает и отдает на выходе содержимое RSS ленты, указанной в поле URL. URL можно задать вручную, а можно подставить в виде параметра из другого блока (видите этот серый кружочек справа от поля ввода url?). Можно задавать несколько источников одновременно.

Fetch Page

Fetch Page

Загружает html страницу находящуюся по адресу URL в с троку. Можно вырезать лишь часть этой строки, указав уникальный шаблон для начала и конца блока. Кроме того, можно сразу разбить строку на отдельные элементы, например, если мы имеем какой-то список, отформатированный с помощью повторяющимися html тегов. Ограничение на запрашиваемую html страницу – 200Кб и не должно быть запрета на индексацию роботами в meta-тегах. В отличии от Fetch Feed, нормально обрабатывает ru кодировки.

Flickr

Flickr

Позволяет получить заголовки и картинки по заданному ключевому слову с популярного сервиса для загрузки фотографий Flickr.com. Неудобство в том, что картинка будет очень маленького размера, гораздо более интересно тянуть фотографии непосредственно с RSS фида Flickr.com.

Yahoo! Search

Yahoo Search

Возвращает поисковые результаты Yahoo по заданному киворду в виде RSS потока. Можно получить title сайта, url, дату последнего обновление в индексе и короткий снипет текста веб-страницы. Site restriction позволяет ограничить область поиска одним или несколькими сайтами.

2. User Inputs

Элементы этой группы позволяют ввести какие-то константы или запросить вод данных от пользователя.

Text Input, Private Text Input

Text Input

Очень простой элемент, позволяет задать строковые константы во время отладки трубы или во время выполнения. Далее эти строки могут быть использованы для подстановки в другие блоки. Private Text Input отличается от обычного Text Input лишь тем, что позволяет указать данные, которые будут доступны только владельцу трубы и не переносятся, например, при клонировании.

3. Operators

Операторы позволяют производить определенные манипуляции с данными rss потока. Надо понимать, что каждый оператор применяет свое действие для всех items фида.

Filter

Filter

Оператор Filter пропускает или наоборот блокирует какие-то данные rss-ленты, удовлетворяющие определенным условиям. Условия можно налагать на любые поля rss ленты, например, мы хотим пропустить только те записи, которые содержат в title слово “new”.

Поля для фильтрации загружаются в дропдаун автоматически при соединении Filter с другими элементами трубы. Это действительно и для любых других операторов.

Loop

Loop

Loop циклически перебирает каждый item rss фида, применяя к его элементам какие-то модификаторы или производя определенные действия с данными. Внутри Loop вы можете размещать модификаторы строк или элементы из раздела Sources, для этого необходимо перетащить модуль непосредственно на Loop блок.

Опция emit result – перезапишет заново все содержимое rss-ленты, assign results to – направит вывод результатов в какой-то из тегов, и не повлияет на существующие данные.

Regex

Regex

Очень полезный и мощный оператор, но требует знания регулярных выражений. Пример на картинке, чистит текст от html тегов.

Rename

Rename

Позволяет переименовать название атрибутов для items. Например, чтобы привести RSS к правильному формату.

Tail, Truncate

Tail, Truncate

Оператор Truncate – обрезает количество items в rss до указанной длинны. Tail – делает то же самое, только “с конца” списка.

Split, Union

Split, Union

Split – разделяет RSS-данные на два одинаковых потока. Union – объединяет вместе до 5 потоков. Если вам необходимо объединить более пяти rss-потоков – просто используйте несколько операторов Union.

Unique

Unique

Удалит items, которые содержат дублирующую строку. Например, если вы хотите, чтобы на выходе вашей RSS не было элементов с одинаковым title, то вы можете использовать этот оператор для фильтрации дублей.

4. String

Этот раздел содержит модули, позволяющие манипулировать со строками.

Translate

Translate

Очень интересный модуль, с точки зрения предоставляемых возможностей – позволяет переводить строки с одного языка на другой. Имеет один небольшой недостаток – при переводе удаляет все html теги, таким образом теряется форматирование текста.

Сложные трубы удобней всего разбивать на отдельные “под-трубы”, выполняющие определенную функцию, а потом собирать из готовых кусочков целостную систему. На вкладке My pipes вы найдете все свои созданные ранее трубы.

Я постарался рассмотреть наиболее интересные элементы Yahoo Pipes. Общее же их количество несколько больше и периодически появляются новые фичи. Чтобы получить короткую справку по любому из элементов и ссылку на пример – нужно нажать на знак “?” в заголовке любого блока.

Еще по теме

Комментарии

Комментарии (43) на запись “Yahoo Pipes FAQ”

  1. kosenka 16.01.2008 21:53

    Проверил выдаваемый Трубами rss через http://feedvalidator.org/ и оказалось, что этот rss не валидный. Вот те раз (

  2. Arser 16.01.2008 22:21

    kosenka, попробовал несколько труб, то что генерит yahoo кажется валидно. Могут быть ошибки в данных - но это уже не его проблемы, да и не принципиально это.

  3. Штирлиц 16.01.2008 22:50

    Отличная статья, спасибо!

  4. Влад 16.01.2008 23:20

    Спасибо за подробное и точное описание элементов яху-пайпс.

    Собственно, только благодаря вашему блогу и расковыриваю яху :)

    респект!

  5. roddik 16.01.2008 23:36

    Подскажите, пожалуйста, Как можно удалять из нужного поля тэги, потом смотреть на его длину, если она нормальная, возвращать тэги на место и пропускать пост, иначе не пропускать? Если не реально, как удалять тэги? Пытался склепать такую трубу, вроде все норм, но отдает все же неправильно..
    воть

  6. Arser 17.01.2008 10:04

    roddik, кажется узнать длину поля не возможно. Хотя если ну очень хочется, то можно - разделить поле посимвольно на items, а количество items уже посчитать можно. Ну и дальше крутить, но с ходу сказать сложно, как именно…

    Может вы просто расскажете свою идею, а мы придумаем, как её реализовать по-другому?

    Кажется google blogsearch таки забанил парсер яху - 403 Forbidden :)

    В вашей трубе есть весьма странная штука: item.strip_tags(item.description). Я о чем-то не в курсе?

    Как удалить теги - написано как раз в этом посте.

  7. roddik 17.01.2008 10:45

    Ну идея-то тривиальная: искать по блогам полные тексты статей, так вот я думал фильтровать по признаку, что без тэгов длина description больше какого-то значения.

    кстати, news.google.com все еще работает

  8. roddik 17.01.2008 10:48

    думаю длину строки можно проверять в фильтре по признаку matches regex .{1000,}

  9. roddik 17.01.2008 10:51

    да, у меня не работает вырезка тэгов до тех пор, пока не поставлена галочка около g - все совпадения, думаю, об этом надо было бы упомянуть

  10. roddik 17.01.2008 10:54

    в общем вот что у меня получилось
    http://pipes.yahoo.com/pipes/pipe.edit#1hN4j9nE3BGhyshnJphxuA
    сорри за кучу комментов

  11. Arser 17.01.2008 11:01

    Угу.
    Использовать regex для фильтра на длину поля - отличная идея.
    Но я бы все же еще дергал полную статью. Пока там только обрывки не короче 500 символов.

  12. roddik 17.01.2008 11:08

    В смысле дергал полную статью? С источника? Разве это возможно?

  13. Arser 17.01.2008 11:17

    Ну по крайней мере можно попробовать, я об этом писал:
    http://www.arserblog.com/delo-truba-chast-1-84/

    Ну а сейчас еще и Fetch Page появился, если источник один - то еще проще. Хотя есть тут мысли, как сделать универсальный парсер, как-то попробую.

  14. roddik 17.01.2008 11:45

    Универсальный парсер не сделать без дома, так как, например, если есть , хрен узнаешь, где его конец, так что в трубах не получится

    ЗЫ: Плохо, что вы не даете ссылки на свои трубы

  15. roddik 17.01.2008 11:48

    А еще плохо, что тэги вырезаются, а не обрабатываются (htmlspecialchars), в предыдущем комменте после “если есть” стояло “div id=”content”" :D

  16. Arser 17.01.2008 11:58

    А я то думаю, что за хрен и что за конец :)

  17. Тормоз 17.01.2008 14:10

    О, новичкам явно полезно будет.
    roddik, почему без DOMа не сделаешь универсальный парсер? Уверен, что это возможно.
    Если упростить, то нам нужно просто выделить наибольшую область с наименьшей концентрацией вложенных тэгов. Не вижу принципиальных сложностей.

  18. roddik 17.01.2008 14:29

    Тормоз, не все так просто, на практике проверено - такой вариант не катит (хотя может это я просто лузер, если у вас получится, напишите об этом, пожалуйста)

  19. Arser 17.01.2008 14:32

    Делал такое на php, работало все отлично, правда немного не так, как Тормоз предлагает. Думаю, на трубах тоже получится в каком-то виде, если получится - выложу.

  20. roddik 17.01.2008 14:40

    Arser, это очень интересная тема, если осталось то, что работало на php, опубликуйте, плз, или скиньте мне на мыло.

  21. Arser 17.01.2008 14:47

    roddik, там все это зашито в мои библиотеки классов, которые выкладывать я не собираюсь, но теорию возможно опубликую в одном из постов.

  22. roddik 17.01.2008 15:22

    А можно тут в двух словах теорию?

  23. Arser 17.01.2008 15:35

    Да все очень просто: весь текст разбивается на части по html тегам. Потом постепенно собирается в кучу, но при этом нужно помнить, что есть теги которые могут встречаться внутри статьи (например [p], [br]), а есть которые обычно отвечают за форматирование блоков и страницы ([div], [table]). Еще нужно учитывать длину каждого полученного куска, чтобы отсечь не информативные данные, типа меню навигации, и прочие мелкие нюансы. После тестов и подбора всех параметров - все работает почти без промахов.

  24. andrey 17.01.2008 16:30

    после беглого осмотра так и не увидел - есть ли у этих пайпов хоть какое-то преимущество перед PHP+SimpleXML?

  25. Arser 17.01.2008 19:17

    Преимущество одно - быстрее чем на php, ну а для не программеров - есть и другой неоспоримый плюс :)

    И это… php давно существует, но как-то лениво было что-то делать, эксперементировать, а с пайпсами вроде веселее как-то :)

  26. Кривдин 18.01.2008 00:28

    Очень интересный пост, спасибо что помогаете разобраться с юху папс!
    Подскажите, пожалуйста, как решить такие практические задачи:
    1. Объеденить в одно целое контент из всех итемов фида?
    2. В начале (или в конце) дескрипшна каждого итема вставлять определенный текст, например ссылку или картинку-фирменный знак?

  27. Arser 18.01.2008 11:37

    2Кривдин:
    1. Хороший вопрос, но как сделать я не знаю. Если выяснишь - сообщи :)
    2. А это уже просто: пример

  28. Всё для вебмастера » Blog Archive » Как я нахожу конкурсы с помощью Yahoo Pipes 18.01.2008 13:49

    […] есть на форуме миллионеров, блоге Тормоза и у Arser’а (FAQ по трубам, рекомендуется к […]

  29. Fobiss 18.01.2008 14:12

    С помощью пайпсов удобно делать маленькие простенькие трубы. Соединил пару-тройку фидов, отфильтровал нужные слова, проверил на уникальность и готово. 5 минут.
    А вот что-то серьёзное уже правильнее писать самому, на PHP, например. Не нужно разбираться в этих хитрых модулях, которые больше нигде не пригодятся. И, в любом случае, возможности Yahoo Pipes весьма ограничены.

    И это… php давно существует, но как-то лениво было что-то делать, эксперементировать, а с пайпсами вроде веселее как-то

    Один из сильнейших аргументов в пользу труб - они цветные и весёлые :)

  30. Пульс блогосферы или Интересненькое часть 2 18.01.2008 18:55

    […] на блоге под названием Хожу на работу в интернет нашел FAQ по Yahoo Pipes, так как перед Новым Годом я успел прикупить Блоферму, […]

  31. Eddie 20.01.2008 14:14

    С Yahoo pipes удобно экспериментировать; но как основной рабочий инструмент я бы их не использовал. Это классный инструмент, но он - чужой. Решит Yahoo его прикрыть, и тогда что?
    Соглашусь с andrey, что php+SimpleXML (в моем случае правда perl + XML::Simple) по возможностям и надежности превосходят Yahoo pipes.

  32. Serzh 20.01.2008 19:52

    ребята, а кто знает, что за чекбоксы такие в Regex модуле? напротив которых написано g m s i ?
    В документации к пайпсам об этом ни слова не говорится.

    Спасибо

  33. roddik 20.01.2008 19:55

    g - относиться ко всем cовпадениям, а не только к первому
    m - . не включает \n
    s - . включает \n
    i - case insensitive

  34. Serzh 20.01.2008 20:00

    биг сенкс, Роддик!

  35. Пример использования Yahoo Pipes или Как получить полный текст новости из фида, если в RSS-ленту отдается не полная статья… 21.01.2008 07:57

    […] Yahoo Pipes FAQ от Arser`а […]

  36. Итоги недели. 21 января 2008 года. | Strelban's Blog. 21.01.2008 19:21

    […] января — Среда Yahoo Pipes FAQ от Arser, который ходит на работу в интернет. Для […]

  37. Smartwebby 28.01.2008 14:33

    Спасибо, помогло :)

  38. miller 30.01.2008 17:06

    удалось кому-то выжать хоть копейку из этой трубы?

  39. Arser 30.01.2008 17:18

    miller, удалось ;)
    Хотя вопрос странный, это ж всего лишь инструмент для работы с rss, а не игровой автомат :)

  40. Netpeak 09.02.2008 21:43

    Конечно блогосфера мощно популяризовала данный сервис у ру-сеошников. Раньше только у буржуев и читали про него, а теперь - в каждом ру-блоге.

  41. Arser 09.02.2008 22:06

    Netpeak, может поделитесь ссылками, а то я как-то не особо встречал полезной информации по трубам на каждом ру-блоге, а было бы интересно…

  42. Serzh 21.02.2008 16:15

    поражает ну просто нереальная их глючность. :(
    Что-то сложное, что технически сделать в трубах можно, зачастую накрывается то ли их-за каких-то таймаутов , то ли хз из-за чего. Даже если разнести нагрузку по разным трубам , а потом в одной сводить все вместе.
    После такого отпадает всякое желание подходить к этим трубам.

  43. Arser 21.02.2008 16:39

    Serzh, представляю что вы там наворотили :)
    Сложное и ресурсоемкое - однозначно проще через свои скрипты…

Оставить комментарий






Генератор Cайтов BRush