Posts Tagged ‘ZennoPoster’

Обзор ZennoPoster

Участвуя в конкурсе ZennoPoster’а, накатал мануал и создал блог http://zenno.ru. Далее на блоге zenno.ru будут поститься новости, мануалы и апдейты зенно. А пока что, первый мануал дублирую сюда.

Если вы не шарите в php и шарить не желаете- ZennoPoster вам подходит. На сайтах фрилансеров за парсер готовы платить в среднем по 75-250$. В нашем уроке мы рассмотрим как с помощью зеннопостера можно сделать парсер за 40 минут, без наличия начальных знаний php. А парсить мы будем сайт www.lyrics.com , точнее его часть. Отпарсим тексты песен Мадонны и сопутствующие ютубовские видео. И сразу же научимся постить это дело на свой блог. В дальнейшем вы можете приделывать переводы к песням, можете придумать еще что-то свое. Тут остается только фантазировать. В данном туториале я старался расписать все подробнее, надеюсь у вас не возникнет проблем при создании шаблона.
Кстати, о спаленных темах. На умаксе еще в далеком 2007 году была спалена тема, которую мы тут частично счас и автоматизируем. Кратко, суть темы в следующем. Берем тексты стихов или песен. Переводим с помощью translate.google.com. В итоге- у нас на сайте текст на двух языках, причем на одном из языков- 100% уникальный текст. А что плохого в том, что я перевел стихи фиговым переводчиком и выложил их юзеру? Просто стихи, видите ли, очень тяжело переводить…… Вообщем темка по-моему неплохая, я ее так и не опробовал.


Чтож, вернемся к делу. Сперва надо найти Мадонну на www.lyrics.com. Вбиваем в поиск Madonna. Как оказывается, их представлено целых две. Берем ту, что пожирнее))) 1539 текстов песен. Щелкаем. Видим на странице ссылки на тексты песен. И таких страниц с ссылками у нас много. Наша первая задача- собрать со всех страниц все ссылки на песни. Адресов страниц со ссылками не так много, поэтому мы забьем их в файл руками. Смотрим внизу на навигатор, видим что ссылки имеют следующий вид:

Навигатор

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/20
Где в каждой из ссылок меняется только число после слэша, указывающее на номер страницы.Что мы делаем. Копируем в блокнот следующим образом:
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/00
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/20
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/40
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/60
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/80
Вставляем потом после слеша в каждой из пяти ссылок единичку- будет уже 100,120,140,160,180.
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/100
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/120
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/140
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/160
http://www.lyrics.com/index.php/artists/name/madonna-p-64565/180
Затем вставляем туда двоечку- будет уже 200,220,240,260,280. Далее троечку, четверочку. В итоге мы получаем файл с полным списком страниц, на которых есть ссылки на тексты песен. Этот файл вы можете взять в приложении. Ложим полученный файл в эту папку: ProjectMaker\Resources . Открываем ПроектМейкер. Сразу вводим в адресную строку http://www.lyrics.com/index.php/artists/name/madonna-p-64565/ и жмем Go!
Когда страничка загружена- жмем Copy steps to the Template Editor. Теперь нам следует посмотреть код этой страницы, чтобы узнать как правильно составить регулярку, которая вытягивала бы ссылки. Жмем HTML Source чтобы увидеть исходный код и ищем ссылку. Затем переходим в RegExp Builder и пробуем подставлять. Одновременно с этим копируем часть текста, чтобы сразу же проверить работу регулярки. Создание регулярок сделано действительно на высоком уровне. Сделав около 7 попыток, у меня получилась регулярка следующего вида:
(?<=\<A href\=\”)http:\/\/www\.lyrics\.com\/index\.php\/artists\/lyric\/madonna-p-64565-lyrics.*?(?=\”\>)
Обратите внимание на то, что «A» и «a», как оказалось, разные буквы. В нашем случае в коде именно большая А. Теперь наша задача- обрабатывать страничку получившейся регуляркой и сохранять результаты в файл. Переходим в Edit Template. Пока что весь шаблон у нас состоит из одного действия- браузинга на заданную страницу (Мы его скопировали кнопкой Copy чуть ранее). Жмем Add IO чтобы добавить второе действие. Выбираем Add IO- Output- Get/Post- Page.

Действие Page означает, что мы будем обрабатывать текущую страницу. Сразу как добавили- прописываем ID. Пишем сюда что угодно, это в нашем деле не имеет значения. И не забывайте заполнять эту графу всякий раз далее в работе. Итак, в поле RegExp вписываем нашу регулярку, и в конце ее добавляем $$$all. Этот макрос означает что если на странице найдется не одно, а два или более участков, попадающих под действие регулярного выражения, то надо их тоже использовать в дальнейшей работе. Так. С изъятием нужного текста разобрались. Теперь добавляем модуль SaveResults чтобы сохранить результаты нашего труда в файл. Добавили модуль, сразу щелкаем Add IO- Input- SaveResults чтобы добавить действие. В File Name мы можем написать как полный путь к файлу, так и относительный. Предпочтительнее второй вариант, поэтому выберем его. Жмем в верхнем меню MacrosBuilder. Открывается окошко. Выбираем там Файлы и директории- Полный путь к директории, в которой запущен ZennoPoster. Копируем этот макрос, и подставляем в наше поле File Name. Но мы хотим сохранить в папке Resources и в файле с названием linksonlyrics.txt. Поэтому у нас получается следующая строка: $($macApplication.StartupPath$)$Resources\linksonlyrics.txt . Теперь внимание, важный момент. Самая первая страница, на которую мы заходим, должна тоже перебираться из файла. Поэтому логичным решением было бы добавить в модуль Get одно действие- брать из нашего заранее приготовленного файла с линками первую строку, и подставлять ее в URL для браузинга. Но есть небольшая фича. Первым действием всегда будет Input Get, поэтому наше вставление линка из файла будет попросту игнорироваться. Решается эта проблема следующим образом. Добавляем еще один модуль Get. В итоге, алгоритм будет такой:
Шаг1.
Действие1. Браузинг на пустую страницу (about:blank)
Действие2. Берем строку из файла
Шаг2.
Действие1. Браузинг на страницу, где URL- строка из файла

Чтож, добавляем модуль Get. Делаем браузинг на пустую страницу. Затем Add IO- Output- Get/Post- From File чтобы брать строку из файла. File Name мы уже с вами научились вписывать, поэтому сразу показываю результат- $($macApplication.StartupPath$)$Resources\madonnalinks.txt Теперь важный момент в понимании работы программы. Результат промежуточного действия в шаге помещается в Location. Чтобы дальше нам использовать результат действия, мы должны скопировать значение поля Location этого действия, и вставить его туда, где нам его необходимо использовать. В нашем случае промежуточный шаг- Взятие строки из файла. Результатом соответственно будет строка. И эту строку нам надо подставлять в URL нашего второго модуля Get. Так мы и сделаем.

Тоже самое надо нам сделать и с результатом обработки страницы. Скопируем Location шага с обработкой страницы регуляркой в поле Value для шага сохранения результатов.
Итак, шаблон готов. Теперь он у нас берет строку из файла. Использует ее как URL и получает код страницы. Сохраняет в файл все участки кода, которые попали под действие заданной регулярки. И так до тех пор, пока в файле не закончатся все строки. Результатом многократного запуска этого шаблона у нас станет файл linksonlyrics.txt, который будет содержать 1539 ссылок :).

Часть 2. Шаблон  парсит страницу, достает заголовки, тексты песен, видео, и затем постит на блог

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

Тексты песен подгружаются через ajax, чтобы их было нелегко вытащить) Хвала солёной кукурузине, наш дивный механизм позволяет это обойти. Внимательно используйте встроенный просмотр исходного кода и пробуйте разные варианты в редакторе регулярок. Вот какая регулярка для текстов песен получилась у меня:
(?<=\<DIV id\=lyric_space\>).*(?=\<BR\>—\<BR\>Lyrics powered by)
Далее. С ютубовским видео ориентируйтесь на то, что перед искомым текстом всегда есть <DIV class=video id=youtube_box>, и строка заканчивается на </EMBED>. Тут трудностей возникнуть не должно. Во второй, основной модуль Get добавляйте три действия обработки страницы, с тремя регулярками, обрабатывающими заголовки, тексты песен, и ютубовское видо.

SaveResults в этот раз мы делать не будем, и сразу же займемся постингом получившихся данных на наш блог. Для постинга я выбрал свой личный блог http://music-land.co.cc/ . Переходим в закладку Record Template и вводим в адресную строку http://music-land.co.cc/wp-login.php?loggedout=true С этой страницы Зенно всегда будет логиниться на блог. Как вы видите, в адресе присутствует ?loggedout=true это для пущей уверенности что мы выходим из админки, прежде чем снова войти, и ошибок не возникнет. Итак. Переходим по ссылке, вводим логин и пасс, жмем войти.

В админке сразу в правой части видим панель для быстрой публикации постов. Напротив Заголовок пишем Заголовок. Напротив Текст пишем Текст. Жмем «опубликовать». Все. Теперь нам надо добавить проделанные действия к уже существующим. Для этого жмем кнопку «Append Steps to the Template Editor». Если все хорошо, то в итоге у вас должно получиться три шага Get:

Теперь идем во второй Get и копируем Location поля, куда помещается результат поиска Заголовка. Переходим к третьему шагу, находим там действие, у которого Value равно «Заголовок». И меняем на макрос Location’a. А в поле с текстом мы вставляем сразу и слова песни, и код ютубовского ролика. Собственно, все.

На этом мы заканчиваем) Сохраняем получившийся шаблон, тестируем. Я делал шаблон и одновременно писал этот мануал. Как оказалось, ролики ютубовские каким-то образом палятся и работать отказываются. Чтож, в следующий раз мы затронем тему как обойти эту защиту и вставить таки видеоклипы в наш экспериментальный блог. Результаты работы моего зенно-парсера-постера вы можете увидеть тут: http://music-land.co.cc/ Всего хорошего!

Приложения:

madonna_parser.xml -Шаблон парсинга ссылок на тексты песен

madonna_parser2.xml- Шаблон парсинга текстов песен и видео с последующим постингом на блог

madonnalinks.txt- Файл с ссылками на страницы со списками песен