суббота, 26 сентября 2009 г.

Создание базового RSS робота, читающего Digg



Creating a basic RSS robot that reads from Digg

В этом руководстве мы увидим, как создать, оладить, опубликовать и использовать очень простого RSS робота с помощью openkapow. Робот будет создавать RSS канал, который содержит только начало постов с Digg. Это руководство описывает процесс в деталях, и большая её часть относится к REST роботам, а также в некоторой степени  и  к Clipping роботам.

Предполагается, что вы уже скачали среду разработки роботов - RoboMaker и зарегистрированы как пользователь на openkapow.com. Все картинки в пособии можно посмотреть на странице в полный размер, просто нажмите на интересующую картинку, и она будет открыта в новом окне. Робот описанный в данном пособии находится здесь

Часть 1 - Создание RSS робота

Начните с открытия RoboMaker, если вы используете Windows вы найдете RoboMaker в меню "Пуск-Программы- Kapow Mashup Server 6.3 Openkapow Edition SR1". Запустите мастер выберите опцию "Создать канал ..." и нажмите кнопку ОК.



В мастере Новых Роботов,  вам нужно ввести URL в RSS робота, в этом случае мы собираемся построить канал от Digg, поэтому мы вводим "www.digg.com" и нажмите кнопку "Далее".









Следующий шаг состоит в том, чтобы давать роботу название и описание. По умолчанию имя будет "RSS feed from" и название URL (в данном случае "RSS feed from www.digg.com"), хорошая идея изменить это на нечто более описательное и ввести хорошее описание. Эта информация будет отображаться на openkapow.com после того, как робот будет опубликован. 




Когда Вы закончите ввод информации о роботе нажмите "Далее".

Последний вопрос в мастере, "хотим ли мы чтобы робот взял какие-нибудь входные значения?". Поскольку мы просто хотим, чтобы RSS  канал содержал описание поста с Digg нам не нужны какие-либо входных значений. Существуют и другие учебные пособия о том, как использовать входные значения для поиска Digg и создания RSS канала основанного на результатах поиска, так что если вы заинтересованы в этом вы сможете в скором времени прочесть их в этом блогеВ настоящее время мы выбираем "Нет" и нажмите кнопку "Готово".



Мы уже создали основы RSS робота, который содержит два этапа - "Load Page" и "Return Item" - это вы можете увидеть в верхней части RoboMaker.

 


Шаг "Load Page", делает только, то что подразумевает название - загружает страницы, точно так  как если бы  Вы использовали браузер. Шаг Return Item возвращает данные от робота и помещает его в RSS канал. Робот начинается с первого активного шага, который подсвечен зеленым цветом. В правой части экрана параметры настройки для текущего шага, а именно "Load Page", и вы можете увидеть, URL "www.digg.com", который будет загружен на этом шаге.







Если нажать на шаг "Return Item", все шаги перед ним будут выполнены, в данном случае это лишь шаг "Load page". Это означает, что страница www.digg.com будет загружен в представление браузера RoboMakers. RoboMaker выполняет действия в ходе разработки, в том же порядке, в котором робот будет выполнять шаги  работая на openkapow.com. Эта функция очень полезна, вы всегда будете видеть состояние робота по тому или иному шагу.

В правой стороне RoboMaker cейчас показаны настройки для шага "Return Item" вместо шага "Load Page", поскольку он сейчас является активным. Ниже настройки для шага "Return Item" вы видите используемые объекты ввода и вывода этого робота. Входные объекты - входные параметры, которые принимает робот, и объекты вывода - данные возвращаемые роботом. Поскольку это один RSS робот - автоматически создается одинрезультирующий объект - "RSS Item" , и поскольку мы не определяли какие-либо выходных объектов в мастере, входных объектов у нас в роботе нет. "RSS Item" результирующий объект - то, что вернет робот после выполнения, так что нам нужно сейчас определить, какие данные должен вернуть робот.

Часть 2 - Определение данных, возвращаемых роботом

Мы просто хотим, чтобы этот робот вернул начало заголовка Digg поста и адрес того же поста. Все, что мы хотим сделать, это получить, данные с этой страницы, чтобы шаг "Load Page" загрузил и положил их в объект RSSItem, тогда шагом "Return Item" произойдет возвращение данных роботом. Для этого убедитесь, что шаг Return Item активен (страница  www.digg.com загружена). Затем нажмите на заголовок поста в представлении браузера RoboMaker.

Заметим, что заголовок поста выделяется в 4 различных местах:

  • в представлении браузера;
  • в исходном коде HTML;
  • в HTML пути;
  • в DOM (не волнуйтесь, если вы не знаете, что все это значит, вам не нужно знать это, если вы не собираетесь делать нечего сложнее этого робота). 

Мы выделили тег "a"  заголовка поста и теперь мы хотим получить URL и текст из этого тега и положить его в выходной объект RSSItem. Начнем с получением текста. Просто щелкните правой кнопкой мыши в окне браузера на заголовке и выберите "Extract title".

Случилось несколько вещей. Новый этап под названием "Extract Title" был вставлен между "Load page" и "Return item".

Если вы посмотрите в нижний правый угол RoboMaker на выходной объект RSSItem вы увидите, что значение атрибут "title" заполнено заголовком верхнего поста Digg. Попробуйте нажать на шаг "Extract Title", и вы увидите, что атрибут "Title" объекта "RSSItem" не имеет значения. Затем щелкните на шаг "Return Item" еще раз и посмотрите, атрибут "Title" вновь заполнен. Это - другой пример того, как RoboMaker выполняет каждый шаг в роботе во время разработки, таким образом Вы можете всегда видеть какие значение имеют переменные, на определенном шаге в Вашего робота.

Давайте взглянем на созданный шаг "Extract Title".Нажмите на шаг Extract Title, чтобы вы могли видеть в конфигурацию шага в правой части RoboMaker. Конфигурация шага состоит из 4 вкладок, давайте сделаем краткий обзор по каждой вкладке. Для получения более подробной пожалуйста, обращайтесь кпомощи и документации по RoboMaker.Первая вкладка "Основные" на вкладке содержится название и комментарий об этом шаге. Это идеальное место для документирования шага, краткое описание и полезное имя. Содержание комментария отображается пиктограммой документа на шаге и всплывающей подсказкой при перемещении мыши на шаг.

Вторая вкладка "Tag Finders"(Поиск тегов) на вкладке определяется с какими html-тэгами шаг должен взаимодействовать. В этом случае это - путь тега к верхнему посту Digg. В большинстве случаев нет необходимости вручную изменить "Tag Finders", вместо этого можно просто создавать их автоматически, как мы сделали только что, используя контекстное меню представления браузераНо если мы хотим изменить Tag Finders у нас есть множество это сделать, смотрите документацию и другие учебные пособия для получения дополнительной информации по этому вопросу.





Вкладка 3, "Action" определяет действия этого шага. В данном случае шаг будет извлекать данные из тегов, определенных в Tag Finders и устанавливать извлеченые данные в атрибут RSSItem.title. Так же, как для вкладки Tag Finders нет вообще никакой потребности вручную редактировать эту информацию, создаваемые параметры самодостаточно в большинстве случаев.

Наконец, дошли до вкладки "Error Handling", в ней мы можем установить, как ошибки, должны быть обработаны, если они произошли. Этот шаг будет обсуждаться и в других учебниках, а в этом учебнике мы просто исходим из того, что мир прекрасен, и что все работает как и задумано. Для всех шагов вкладки "Basic", "Tag Finders" and "Error Handling" одинаковы по структуре, только вкладка "Action" различается от шага к шагу.

Мы извлекли заголовок верхнего поста Digg, но мы также хотим получить URL этого поста. Это происходит почти так же, как мы это делали при извлечении названия, щелкните правой кнопкой мыши на заголовок в представлении браузера и вместо того, чтобы выбрать "Extract Title" мы выбираем "Extract URL".



Будет создан новый шаг под названием "Extract URL" , и   атрибут "URL" объекта вывода RSSItem теперь содержит URL верхнего поста Digg. Наш робот, в настоящее время имеет 4 шага. Это - очень простой!! робот, и мы можем быть уверены, что он работает, но в целях безопасности мы хотим проверить это, таким образом время для отладчика RoboMaker

Часть 3 - Отладка робота

Если переменная имеет неправильные значение, или если что-то не работает, вы увидите, как RoboMaker выполняет каждый шаг в процессе разработки. Для простого робота, которого мы сделали в этой статье вероятно нет потребности в большем тестировании, но для большего и более сложного робота, Вы вероятно хотите проверить сможет ли робот обработать неправильные и недостающие входные данные и т.д., чтобы сделать это, мы используем RoboDebugger, который можно открыть, нажав на небольшого синего жука на панели управления RoboMaker.

Открылся RoboDebugger в новом окне, и в верхней части окна мы видим действия нашего RSS робота. Здесь мы можем запускать робота и видеть то, что он возвращает, если бы мы использовали входные параметры, мы могли бы также проводить тестирование с различными входными значениями. Мы можем выполнить робота целиком или же мы можем делать это пошагово. На каждом шаге мы можем видеть, значения каждого атрибута объекта. Мы также можем устанавливать точки останова, чтобы отладчик останавливается на конкретном шаге. Начнем, нажав на синюю иконку запуска - робот будет выполнен.

Этот простой тест показывают нам то, что выходные данные робота будут возвращаться, как мы и подозревали все работает отлично.Давайте установим точку останова на шаг "Extract URL" и посмотрим, как и что работает. Щелкните правой кнопкой мыши на шаге "Extract URL" и выберите "Toogle Breakpoint".



Шаг "Extrac URL" теперь содержит синий квадрат, указывающий, что он имеет точку останова. Давайте запустим робота, на этот раз он остановится на шаге "Extrac URL".

Когда отладчик остановился проверьте вкладку "State", вы можете увидеть, состояние робота, на момент его остановки. Здесь мы видим, что робот извлек RSSItem.title, но пока еще не извлечен RSSItem.url. Точки останова показаны как в RoboDebugger и RoboMaker, но используются они только в отладчике.





В RoboDebugger есть удобная кнопка "GoTo", которая вернет нас к главному окну RoboMaker с роботом на том же шаге(и в том же состоянии), что и в отладчике. Это очень полезно, если у Вас большой робот и вы обнаружили ошибку при тестировании в RoboDebugger, очень легко определить, что это за ошибка, и где ее исправить. Теперь робот отлажен, время опубликовать его в openkapow.com что бы мы могли его использовать.

Часть 4 - Сохранение, публикация и запуск робота

Мы имеем довольно классного робота, но нахождение его на локальном компьютере бессмысленно. Так давайте же опубликуем его на openkapow.com, чтобы мы могли использовать RSS канал в нашем RSS Reader. Первое, что нужно сделать, это сохранить робота локально. Это не является необходимым условием для опубликования робота на openkapow.com, но это всегда хорошая идея. Нажмете "Save" в меню "File" и сохраните файл робота на вашем жестком диске.

Следующее, что нужно - это  опубликовать робота. Это означает, робот будет загружен на openkapow.com и его можно запускать оттуда, используя простой URL, открыв его в браузере или вызвав в программу (например, в вашем PHP, JSP, ASP и Ruby On Rails коде). После того, как робот, загружен в openkapow.com он будет доступен всем для использования и скачиванияДля того, чтобы опубликовать робота вы должны быть зарегистрированы в качестве пользователя на openkapow.com и вы должны ввести в RoboMaker ваши имя пользователя и пароль openkapow. Вы, наверное, сделал это, когда установили RoboMaker, если нет, просто перейдите в меню "File" - "Edit Username and Password". Когда имя пользователя и пароль указаны правильно нажмите кнопку со значком маленького робота, чтобы открыть диалоговое окно публикации.

Название и описание робота уже заполнены, на основе того, что вы ввели при первом создании робота. Вы можете редактировать эту информацию, если хотите. Каждый робот должен быть классифицированы как принадлежащие категории, в этом случае мы берем "Обучение и примеры" (если вы делаете аналогичного робота самостоятельно он должен быть опубликован в разделе "Новости", поскольку Digg является сайтом новостей). Каждый робот может также иметь метки, связанные с ним. При поиске по openkapow.com легче найти робота, добавьте теги, которые как вы считаете, лучше всего описывают вашего робота. Поскольку мы публикуем RSS робота можно также выбрать, как часто будет происходить его запуск. RSS роботы выполняются на сервере  openkapow.com с заданной частотой, а результат кэшируется на сервере. Это делает ваш RSS канал более быстрым при вызове его из вашей RSS читалки или браузера. Оставим значение по умолчанию, робот будет выполнятся один раз в час.

После того, как мы добавили теги жмем кнопку опубликовать. RoboMaker соединяется с openkapow.com(иногда может возникать ошибка, поэтому данный процесс не всегда проходит гладко с первого раза) и добавляет вашего робота. После этого вы получите обратно URL по которому робот, теперь доступен для использования. Добавить URL в Ваш RSS Reader (Netvives, My Yahoo и т.д.).

При открытии, URL в обычном браузере мы увидим что RSS канал возвращает XML. Используя URL в вашем RSS Reader, вы будете видеть верхний пост Digg, и он будет обновляться каждый час.

Если вы хотите найти адрес уже опубликованного робота вы можете обнаружить его, в "Robot Configuration" в меню "File" RoboMaker. Там вы также можете изменить RSS версию, которую будет использовать канал. Робот теперь также доступен на openkapow.com для каждого, вы можете скачать и использовать робота со страницы роботов.

Заключение

Мы несколькими кликами мыши создали RSS канал, содержащий верхний пост с Digg. Мы еще не написали ни строчки кода, даже не изменили ни одной из автоматически генерируемых конфигураций. Это хороший пример, показывающий как легко разработать робота, и быстро увидеть результаты своей работы. Конечно, было бы гораздо лучше, если бы мы смогли вернуть все посты с Digg, а не только первый, и это именно то, что мы будем делать в следующей статье.