Руководство №2. Создание парсера выдачи гугл.

В этом руководстве описывается, как создать автономный скрипт, который разбирает выдачу гугл.




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

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




 Чтобы приступить к созданию сценария, вам нужно запустить Browser Automation Studio и нажать кнопку "Запись". 




Нажмите кнопку "Загрузить", чтобы БАС загрузил страницу google.com.




Введите google.com в поле "Url сайта" и нажмите Ок.




Создайте ресурс чтобы дать возможность пользователю ввести запрос.




Перезапустите скрипт и установите ресурс "Запрос" в "коты".




Используйте действие "Ввод текста".




Выберите ресурс.




Запустите скрипт снова. БАС загрузит гугл и напечатает запрос.




Чтобы начать поиск нужно нажать на Enter.




Используйте действие "Ввод текста" и специальную клавишу <RETURN> для того,чтобы нажать Enter.




Теперь давайте получим адрес первого сайта в выдаче. Наведите курсор на первую ссылку и кликните левой кнопкой.




Выберите действие "Получить Текст".




После того, как вы нажмете Ок, текст ссылки будет сохранен в переменную SAVED_TEXT. Вы можете выбрать другое название переменной.




Используйте действие "Лог", чтобы вывести текст ссылки.




Используйте кнопку @ чтобы использовать переменную.




Выберите переменную SAVED_TEXT.




Поле "Данные для ввода" теперь содержит [[SAVED_TEXT]]. Это означает, что будет выведено содержимое это переменной. Ресурсы обрамлены {{}} а переменные [[]].




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




Вы увидите соответствующий результат во вкладке логов.




Теперь давайте получим урл ссылки, для этого нужно использовать действие "Получить Атрибут Элемента".




Установите имя атрибута в "href". После того, как вы нажмете Ок, урл ссылки(значение атрибута href) будет сохранено в переменную SAVED_ATTRIBUTE




Используйте действие "Лог", чтобы вывести переменную SAVED_ATTRIBUTE также как SAVED_TEXT




В данный момент скрипт получает только первую ссылку, чтобы получить все ссылки на странице, нужно использовать меню "Для каждого эелемента"




Сначала выберите все 4 последних действия и нажмите кнопку "Del" чтобы удалить их.




Используйте действие "Начать Цикл".




Чтобы начать цикл нужно задать css селектор, которому будет соответствовать каждый элемент используемый в цикле.
Текущий селектор :nth-child(1) > .rc > .r > a
Удалите :nth-child(1) > Так как эта часть запроса ответственна за выбор первого элемента, тогда как цикл должен содержать все ссылки.




Установите селектор .rc > .r > a и нажмите Ок




Установите курсор во внутрь цикла. Действия, которые вы поместите внутрь цикла будут выполнены для каждой итерации.




Используйте действие "Получить текст" из меню "Для каждого элемента" для сохранения текста ссылки в переменную. Меню "Для каждого элемента" содержит те же действия, что и основное, но действия из меню "Для каждого элемента" применимы только внутри цикла.




Интерфейс действий из меню "Для каждого элемента" идентичен с интерфейсом действий из основного меню.




Выведите результат, сохраните урл каждой ссылки в переменную SAVE_ATTRIBUTE, точно так же как делали раньше. В конце концов, панель действий должна выглядеть так, как на скриншоте.




После перезапуска вкладка логов должна содержать все ссылки со страницы!




Панель сценария содержит множество действий. Сделаем скрипт более читаемым создав функцию "ParseGooglePage" и поместив весь код туда.
Нажмите на кнопку + во вкладке функций.




Введите "ParseGooglePage" в всплывающее меню.




Новая функция создана! Тело функции пустое в данный момент. Давайте скопируем действия, которые отвечают за парсинг в эту функцию.




Вернемся к главной функции выбрав элемент комбобокса.




Выберите часть кода, которая отвечает за парсинг и нажмите Ctrl-X




Смените функцию на "ParseGooglePage" снова и нажмите Ctrl-V.




Если запустить код в таком виде, то парсинг не будет выполнен, потому что функция объявлена, но не вызвана. Исправим это использовав действие "Вызов функции"




Выберите название функции и нажмите Ок.




Вкладка сценария выглядит более компактно сейчас.




В данный момент скрипт парсит только первую страницу, далее мы улучшим его так, чтобы он мог парсить несколько страниц. Чтобы добиться этого, нужно использовать действие "For".




Действие "For" имеет 2 параметра: "От" и "До", оба целые числа, оба могут быть загружены из ресурса. Давайте выставим их в 1 и 3. Это означает, что скрипт будет выполнен 3 раза и будет парсить 3 первых страницы выдачи.




Скопируйте вызов функции в середину цикла.




Последний шаг - добавить клик по кнопке следующей страницы в конце цикла.




Вот и все! Теперь скрипт умеет парсить несколько первых страниц выдачи.