Напишем с помощью Макроса и Помощника кода скрипт

Как написать скрипт с помощью Макроса, Контекстного меню и Помощника кода.

Напишем с помощью Макроса, Контекстного меню и Помощника кода скрипт, который будет разбирать выдачу Яндекса, по заданным ключевым запросам.

Исходная задача.

У нас есть файл с ключевыми словами keys.txt в формате: одна строка — одна ключевая фраза, то есть он выглядит так:

доска объявлений
доска бесплатных объявлений
подать объявление
объявление бесплатно
доска бесплатный
и т.д.

Эти ключевые фразы мы будем вводить с помощью программы в поле поиска и разбирать выдачу, то есть получать из неё адреса сайтов и сохранять эти адреса в файл с результатами res.txt.

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

1. Чтение из файла поисковых запросов.
2. Ввод поисковых запросов в поле поиска Яндекса.
3. Разбор поисковой выдачи.
4. Сохранение результатов в файл.

Действия на странице Яндекса мы можем записать с помощью Макроса или Контекстного меню, а работу файлом выполним с помощью Помощника кода.

C чего начать?

В папке My Scripts создадим новую папку для нашего скрипта. Адрес к папке My Scripts будет примерно такой C:\XWeb Studio\Human Emulator Studio\My Scripts. Всё зависит от того куда вы установили саму программу. Создаём в ней папку yandex_parser.
Обновляем в панели Быстрый старт дерево и видим в нём созданную нами папку.

Панель Быстрый старт
Панель Быстрый старт

Далее создаём новый php скрипт.

Создать новый php скрипт
Создать новый php скрипт

Далее через контекстное меню сохраняем наш скрипт в папку yandex_parser с именем yandex_parser.

сохраняем наш скрипт в папку
сохраняем наш скрипт в папку

Теперь в самом скрипте удалим всё лишнее и отредактируем путь к папке с шаблонами. После всех наших действий в папке yandex_parser будет лежать скрипт yandex_parser.php, с кодом который будет выглядеть так:

Теперь в папкe yandex_parser создадим папку data и скопируем в неё наш файл с ключевыми словами keys.txt. А также добавим папку res, в которую будем писать файл с результатами сбора.

папка со скриптом
папка со скриптом

Все приготовления законченны теперь перейдём непосредственно к написанию скрипта.

Запись с помощью Макроса.

С помощью Макроса мы запишем действия ввода строки в поле поиска и нажатие на кнопку поиск.

Для того чтобы писать в текущий скрипт в настройках Макроса нужно убрать галочку Создавать новый скрипт.
Ставим каретку курсора в скрипте yandex_parser.php в то место куда мы будем добавлять наш код, переходим в браузере Хумана на yandex.ru и после этого включаем Макрос на запись из главного меню.

включаем Макрос на запись из главного меню
включаем Макрос на запись из главного меню

В месте где была установлена каретка курсора в скрипте добавиться строка $browser->navigate(«https://yandex.ru/»);

Теперь кликаем на поле ввода поискового запроса и набираем там любой текст, к примеру humanemulator. И нажимаем на кнопку Найти или на Enter.

В наш скрипт будет добавлен следующий код:

Подробно про использование Макроса можно прочитать в статье Запись Действий пользователя в браузере.

Добавление кода с помощью Контекстного меню.

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

После перехода в браузере Хумана на yandex.ru, кликаем правой кнопкой мыши на корешке закладки в нижней части панели браузера и выбираем в нём пункт меню $browser -> Навигация -> $browser->navigate(«about:blank»); В скрипте в месте где установлена каретка курсора добавиться строка $browser->navigate(«about:blank»);.

кликаем правой кнопкой мыши на корешке закладки в нижней части панели браузера
кликаем правой кнопкой мыши на корешке закладки в нижней части панели браузера

Заменяем «about:blank» на «https://yandex.ru/». Далее правой кнопкой мыши кликаем на поле ввода поискового запроса и выбираем в открывшемся контекстном меню пункт Эмулировать клавиатуру -> $input->send_keyboard_input_by_name(«text»,»», «20:40»);

выбираем в открывшемся контекстном меню пункт
выбираем в открывшемся контекстном меню пункт

В скрипте у нас будет следующий код:

Видео про использование контекстного меню на нашем канале.

Работа с Помощником кода.

Теперь мы автоматизируем все действия с файлом с помощью Помощника кода. Для начала откроем Помощник кода если он у вас ещё не открыт. Главное меню программы пункт Вид -> Панель Помощник Кода. Обновим её что бы увидеть все доступные нам действия в Помощнике кода. Для этого нажимаем на иконку в верхней части панели:

нажимаем на иконку в верхней части панели
нажимаем на иконку в верхней части панели

Для начала нам нужно прочитать ключевые запросы из файла. Выбираем пункт в дереве Текстовый Файл -> Работа с файлом -> прочитать файл в массив.

Выбираем пункт в дереве Помощника кода
Выбираем пункт в дереве Помощника кода

Перед тем как выбрать этот пункт дерева установим каретку курсора в редакторе скрипта выше кода который у нас уже там есть добавить в скрипт следующий код:

Нам остаётся только заменить в этом коде «путь к файлу» на «data/keys.txt». Теперь для того что бы ввести все поисковые запросы из файла в поле поиска Яндекса нам нужно на основе нашего массива организовать цикл.

Для этого в дереве Помощник Кода выберем пункт Конструкции -> Циклы -> цикл по всем элементам. В скрипт добавиться следующий код:

Заменим // действия на код который мы записали с помощью Макроса или Контекстного меню и вставим в функцию $input->send_keyboard_input_by_name(«text»,»», «20:40»); ввод $value, так что бы на конце у нас был «\n». В итоге у нас получиться следующий скрипт:

Можем запустить скрипт на выполнение для проверки всё ли мы сделали верно. Скрипт вбивает фразу в поле поиска и выдаёт поисковые результаты. Теперь наша задача сохранить поисковые результаты в файл. Для этого вновь воспользуемся контекстным меню. Кликаем на ссылку в поисковой выдаче правой кнопкой мыши. Главное что бы этот элемент точно был anchor, а не div или span. В контекстном меню для интересующих нас ссылок выбираем следующий пункт меню anchor -> $anchor->get_all_hrefs_by_attribute(«class»,»link link_theme_outer path__it»,false,»<br>»);

В контекстном меню для интересующих нас ссылок выбираем пункт меню
В контекстном меню для интересующих нас ссылок выбираем пункт меню

Это функция возвращает нам строку со всеми href  разделёнными <br> всех ссылок, у которых class=link link_theme_outer path__it. Немного подправим наш код, добавив к только что добавленной функции $str= в итоге наш код будет выглядеть так:

Эту строку уже можно записывать в файл, заменив перед этим в функции $anchor->get_all_hrefs_by_attribute(«class»,»link link_theme_outer path__it»,false,»<br>»); <br> на «\n» для того что бы каждый адрес записался в файл с новой строки. Если мы желаем убрать лишнее или выполнить какие то другие действия с полученными адресами, то нам необходимо полученную строку разбить в массив. Для этого воспользуемся снова Помощником кода. Выберем пункт дерева Конструкции -> Массивы -> разбить строку на элементы массива. В наш скрипт добавиться следующий код:

Заменим «;» на «<br>» и переименуем массив $arr в $arr2, так как выше в скрипте мы уже работаем с массивом $arr.
Для того что бы перед записью посмотреть содержимое массива выведем это содержимое в панель отладки. В этом нам снова поможет Помощник кода. Выбираем в дереве Конструкции -> Массивы -> показать массив в панели отладки. в наш скрипт добавить следующий код:

заменяем $arr на $arr2. Код нашего скрипта будет такой:

Запускам скрипт на выполнение. В панели отладки будет следующий текст:

Из вывода в панели отладки видно, что ссылки на рекламные сайты начинаются с http://yabs.yandex.ru/count/ уберём эти ссылки при записи адресов в файл. Запись в файл у нас будет как добавление каждой строки из массива $arr2 с адресами в файл res/res.txt.
Опять воспользуемся для этого Помощником кода. Сначала добавим цикл для массива $arr2. Для этого выберем опять пункт дерева Конструкции -> Циклы -> цикл по всем элементам. Заменим в этой конструкции $arr на $arr2 и $value на $value2. Вместо строки // действия вставим добавление строки в файл. Для этого выберем в дереве Помощника кода пункт Текстовый файл -> Работа с файлом -> добавить строку к файлу.
В скрипт у нас добавиться код:

Теперь добавим условие перед добавлением строки в файл, что бы не писать в него адреса рекламных сайтов. Выбираем в Помощнике кода Конструкции -> Ветвления -> выполнение по условию. В скрипт добавиться следующий код:

заменяем // действия на

// добавить строку в текстовый файл
$textfile->add_string_to_file(«res/res.txt», $value2.»\n»);

а $varConditonal на условие strpos($value2,»http://yabs.yandex.ru/count/»)===false так что в итоге наш код будет:

а весь скрипт будет выглядеть как:

Если запустить скрипт на выполнение то в папке res появится файл res.txt с адресами с первой страницы выдачи Яндекса. Как видно из статьи Макрос, Контекстное меню и Помощник кода существенно упрощают написание скриптов автоматизации под свои задачи. Многие действия будут повторяться из скрипта в скрипт и разобравшись один раз с этими действиями вы легко сможете их использовать в других скриптах.

Любые вопросы по данной статье, Макросу, Контекстному меню или Помощнику кода можно задать у нас на форуме.

Посмотреть видео уроки на нашем канале в youtube.


Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.