Программа для автоматизации действий в браузере

Bas Browser Automation Studio: новый инструмент для автоматизации браузерных задач

Bas Browser Automation Studio (BAS) — это бесплатный инструмент для автоматизации веб-браузера, который может ускорить и упростить выполнение повторяющихся задач в Интернете. BAS позволяет создавать скрипты для автоматической навигации по веб-сайтам, заполнения форм, скачивания файлов и многого другого.

Как работает BAS?

BAS создан на основе браузера Chrome и использует инструменты, предоставляемые браузером, такие как DevTools Protocol, для автоматизации задач. Он обеспечивает простой пользовательский интерфейс для создания скриптов, основанных на действиях, выполненных в браузере.

В BAS есть множество встроенных функций, таких как имитация щелчков мыши, нажатия клавиш и заполнения форм. Также можно использовать JavaScript для выполнения более сложных задач.

Как использовать BAS?

С помощью BAS можно автоматизировать многие повторяющиеся задачи, такие как:

  • Заполнение форм на веб-сайтах
  • Сбор данных с веб-страниц
  • Автоматический вход на сайты
  • Парсинг веб-страниц и скачивание файлов
  • Создание ботов для социальных сетей и мессенджеров

Для использования BAS нужно:

Automa — автоматизация браузера и визуальное программирование

  1. Скачать и установить BAS на свой компьютер.
  2. Открыть браузер Chrome через BAS.
  3. Запустить запись действий и выполнить необходимые задачи.
  4. Остановить запись и сохранить скрипт.
  5. Запустить скрипт для автоматического выполнения задач.

Источник: dzen.ru

JavaScript, Node, Puppeteer: автоматизация Chrome и веб-скрапинг

Библиотека puppeteer для Node.js позволяет автоматизировать работу с браузером Google Chrome. В частности, с помощью puppeteer можно создавать программы для автоматического сбора данных с веб-сайтов, так называемые веб-скраперы, имитирующие действия обычного пользователя. В подобных сценариях может применяться браузер без пользовательского интерфейса, так называемый «Headless Chrome». Используя puppeteer , можно управлять и браузером, который запущен в обычном режиме, что особенно полезно при отладке программ.

image

Сегодня мы поговорим о создании веб-скрапера на базе Node.js и puppeteer . Автор материала стремился к тому, чтобы статья была интересна как можно более широкой аудитории программистов, поэтому пользу из него извлекут как те веб-разработчики, которые уже имеют некоторый опыт работы с puppeteer , так и те, которые впервые сталкиваются с таким понятием, как «Headless Chrome».

Предварительная подготовка

Перед началом работы вам понадобится Node 8+. Найти и загрузить его можно здесь, выбрав текущую (Current) версию. Если вы никогда раньше не работали с Node, взгляните на эти учебные курсы или поищите другие материалы, благо, их в Сети предостаточно.

Как автоматизировать работу в браузере

После установки Node создайте папку для проекта и установите puppeteer . Вместе с ним будет установлена и актуальная версия Chromium, который гарантированно будет работать с интересующим нас API. Сделать это можно с помощью следующей команды:

npm install —save puppeteer

Пример №1: создание копий экрана

После установки puppeteer разберём простой пример. Он, с небольшими изменениями, повторяет документацию к библиотеке. Код, который мы сейчас рассмотрим, делает скриншот заданной веб-страницы.

Для начала создадим файл test.js и поместим в него следующее:

const puppeteer = require(‘puppeteer’); async function getPic() < const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘https://google.com’); await page.screenshot(); await browser.close(); > getPic();

Читайте также:
Программа чтобы заблокировать папку

Построчно разберём этот код. Сначала покажем общую картину.

const puppeteer = require(‘puppeteer’);

В этой строке мы подключаем ранее установленную библиотеку puppeteer в качестве зависимости.

async function getPic()

Тут представлена главная функция, getPic() . Эта функция содержит код, автоматизирующий работу с браузером.

getPic();

В этой строке мы вызываем функцию getPic() , то есть, выполняем её.

Важно обратить внимание на то, что функция getPic() является асинхронной, она определена с ключевым словом async . В ней используется конструкция async / await из ES 2017. Так как getPic() — функция асинхронная, она, при вызове, возвращает объект Promise . Такие объекты обычно называют «промисами». Когда функция, определённая с ключевым словом async , завершает работу и возвращает некое значение, промис либо будет разрешён (в случае успешного завершения операции), либо отклонён (если произойдёт ошибка).

Благодаря использованию при определении функции ключевого слова async , мы можем выполнять в ней вызовы других функций с ключевым словом await . Оно приостанавливает выполнение функции и позволяет дождаться разрешения соответствующего промиса, после чего работа функции продолжится. Если это всё вам пока не понятно — просто читайте дальше и постепенно всё начнёт становиться на свои места.

Теперь разберём код функции getPic() .

const browser = await puppeteer.launch();

Тут мы запускаем puppeteer . Фактически это означает, что мы запускаем экземпляр браузера Chrome и записываем ссылку на него в только что созданную константу browser . Так как в этой строке использовано ключевое слово await , выполнение основной функции будет приостановлено до разрешения соответствующего промиса. В данном случае это означает ожидание либо успешного запуска экземпляра Chrome, либо возникновения ошибки.

const page = await browser.newPage();

Здесь мы создаём в браузере, управляемом посредством программного кода, новую страницу. А именно, запрашиваем эту операцию, ожидаем её завершения и записываем ссылку на страницу в константу page .

await page.goto(‘https://google.com’);

Используя переменную page , созданную в предыдущей строке, мы можем дать странице команду по переходу на указанный URL. В данном примере мы переходим на https://google.com . Выполнение кода, как и в предыдущих строках, приостановится до завершения операции.

await page.screenshot();

Здесь мы запрашиваем у puppeteer создание скриншота текущей страницы, представленной константой page . Метод screenshot() принимает, в виде параметра, объект. Тут можно указать путь, по которому нужно сохранить скриншот в формате .png . Опять же, здесь используется ключевое слово await , что приводит к приостановке выполнения функции до завершения операции.

await browser.close();

Функция getPic() завершает работу и мы закрываем браузер.

Запуск примера

Вышеописанный код, сохранённый в файле test.js , можно запустить с помощью Node следующим образом:

node test.js

Вот что получится после того, как он успешно отработает:

Замечательно! А теперь, чтобы было веселей (и чтобы облегчить отладку), мы можем выполнить те же действия, запустив Chrome в обычном режиме.

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

const browser = await puppeteer.launch();
const browser = await puppeteer.launch();

Сохраним файл и снова его запустим с помощью Node:

node test.js

Здорово, правда? Передавая объект в качестве параметра при запуске браузера мы можем наблюдать за тем, как код управляет работой Google Chrome.
Прежде чем идти дальше, сделаем ещё кое-что. Вы заметили, что скриншот, который делает программа, включает в себя лишь часть страницы? Так происходит из-за того, что окно браузера немного меньше размера веб-страницы. Исправить это можно с помощью следующей строчки, меняющей размер окна:

await page.setViewport()

Её надо добавить в код сразу после команды перехода по URL. Это приведёт к тому, что программа сделает скриншот, который выглядит гораздо лучше:

Читайте также:
Структурная схема меню программы

Вот как будет выглядеть итоговый вариант кода:

const puppeteer = require(‘puppeteer’); async function getPic() < const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘https://google.com’); await page.setViewport() await page.screenshot(); await browser.close(); > getPic();

Пример №2: веб-скрапинг

Теперь, когда вы освоили основы автоматизации Chrome с помощью puppeteer , разберём более сложный пример, в котором займёмся сбором данных с веб-страниц.

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

Автоматизируем любые действия в браузере с iMacros

iMacros — это программа, которая позволяет автоматизировать и имитировать действия пользователя в браузере. По словам разработчиков, iMacros загрузили 9 миллионов раз, но лишь 240 тысяч юзеров активно используют приложение. То есть лишь 3% из установивших продукт нашли ему применение. И неслучайно.

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

Рис. 1. Начало работы iMacros

Другие статьи в выпуске:

Хакер #185. Докажи баг!

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Установка

Есть два варианта установки iMacros:

  • в качестве расширения (add-ons) для браузера (Firefox, Chrome или Internet Explorer),
  • как отдельное приложение (только для Windows).

В описанных ниже примерах использован iMacros Firefox add-on.

Hello world

Основной прием, которому стоит научиться, — запись действий в браузере и последующее их воспроизведение. Перейдем на вкладку Record на панели в левом нижнем углу экрана и нажмем на кнопку Record Macro. Теперь вобьем в Google «Hello world» и нажмем Enter. Потом кнопку Stop (под кнопкой Record Macro). iMacros сгенерировал код, который можно многократно запускать и редактировать:

VERSION BUILD=7020226 RECORDER=CR URL GOTO=https://www.google.ru/?gfe_rd=cr ‘открываем страницу добавления товара URL GOTO=http://example.com/newproduct ‘записываем значение первого поля файла CSV в форму для названия товара TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_title CONTENT= > ‘записываем значение второго поля файла CSV в форму для короткого названия товара TAG POS=1 TYPE=TEXTAREA FORM=ID:new_product ATTR=ID:product_short_description CONTENT= > ‘третье и четвертое поле — аналогично TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_variants_attributes__price CONTENT= > TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_variants_attributes__quantity CONTENT=> ‘после ввода всех данных о товаре сохраняем его в каталог TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:new_product ATTR=* // А вот так выглядит products.csv: «Товар 1″,»Опиcание товара 1″,»555″,»7» «Товар 2″,»Опиcание товара 2″,»722″,»13» «Товар 3″,»Опиcание товара 3″,»234″,»9» «Товар 4″,»Опиcание товара 4″,»301″,»11»

Рис. 2. Запись макроса

Извлечение данных из веб-страниц

А теперь представим обратную ситуацию. Когда нужно просмотреть каталог магазина-конкурента и сохранить информацию о товарах.

‘Этот код извлекает текстовое содержимое из абзацев, имеющих атрибут «class», равный «product_description» TAG POS=1 TYPE=P ATTR=CLASS:product_description EXTRACT=TXT ‘А этот сохраняет его в файл SAVEAS TYPE=TXT FOLDER=»C:» FILE=»product_desc.txt» ‘А вот команда для запуска диалогового окна сохранения картинки и нажатия кнопки подтверждения: TAG POS=1 TYPE=IMG ATTR=ID:product_image CONTENT=EVENT:SAVEITEM ONWEBPAGEDIALOG KEYS=2>1>

Естественно, весь этот код можно использовать в цикле с динамическими переменными.

Рис. 3. Панель запуска макроса

Вызов iMacros из кода

Любой макрос можно сохранить в файле с расширением iim и использовать в приложениях, написанных на 16 языках программирования. Только надо не забыть установить полную версию (не аддон) iMacros на компьютер или веб-сервер.

Поддерживаемые языки

WWW

  • Пользователи iMacros для Firefox могут делиться между собой исходниками с помощью закладок Delicious. Подробности здесь: wiki.imacros.net/iMacros_for_Firefox#Bookmarking
  • Полный мануал по iMacros: wiki.imacros.net
  • Сайт производителя: imacros.net

Batch-файлы

Вызов iMacros из батников — наиболее простой и удобный путь автоматизировать их выполнение. Достаточно одной строки для запуска макроса:

Читайте также:
Как отключить антивирусную программу на ноутбуке

«ProgramFilesiOpusiMacrosiMacros.exe» -macro «….MacrosDemoRegExpSearch.iim»

C++

Основная сложность в использовании iMacros под C++ — настройка среды разработки (конкретику по версиям различных сред ищи в документации или спрашивай у саппорта). Принцип работы кода такой же, как в PHP:

IAppPtr app = IAppPtr(__uuidof(App)); Status s = app->iimInit(«», true, «», «», «», cTimeout); s = app->iimPlay(«wsh-extract-rate», cTimeout); // Запуск wsh-extract-rate s = app->iimExit(cTimeout);

Использование JavaScript в макросах

В iMacros можно присваивать переменным результаты выполнения JavaScript-кода c помощью команды EVAL:

SET JSVAR EVAL(«var JSVAR = 45+5; JSVAR;»)

PHP

iMacros можно запускать с веб-сервера, используя PHP-скрипт. Зачем это может пригодиться? Для пополнения базы данных посредством мониторинга информационных сайтов, генерации онлайн-табло результатов тестирования состояния серверов и так далее. Пример вызова макроса, осуществляющего поиск на странице:

iimInit(«-runner»); // Получаем код макроса и слова для поиска // из адресной строки $imacrosprocess = $iimobject->iimSet («-var_keyword», $_GET[«keyword»]); $imacrosprocess = $iimobject->iimPlay ($_GET[«macro»]); // Выводим отчет о выполнении макроса (удалось // запустить или нет) echo «iimplay=»; echo $imacrosprocess; // и результаты поиска echo «extract attachment_60091″ aria-describedby=»caption-attachment-60091″ style=»width: 642px» >Рис. 4. Окно редактирования макросаРис. 4. Окно редактирования макроса

Direct Screen Technology

Если сайт сделан на Flash, Flex или SilverLight, то к его элементам нельзя обратиться стандартными способами (по идентификаторам DOM-разметки). Необходимо использовать координаты объекта на веб-странице:

‘клик по точке с координатами и ввод текста DS CMD=MOVETO X=455 Y=224 CONTENT= текст

С помощью координатной адресации можно даже имитировать drag and drop. Перед записью макроса для Flash-сайта необходимо включить Use Direct Screen Commands в настройках.

Скриншоты

С помощью команды SCREENSHOT TYPE=(PAGE|BROWSER) FOLDER=folder_name FILE=file_name можно сделать скриншот всей страницы, а используя TAG + обращение к элементу + CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT — отдельной ее части.

Тестирование сайтов

С помощью iMacros можно легко написать программу для мониторинга времени реакции на разные действия пользователя. Пример:

‘Загружаем страницу и записываем в бортовой журнал время на ее загрузку URL GOTO=http://example.com/about STOPWATCH имя и фамилию пользователя в формы и замеряем время, затраченное на отправку данных TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:username CONTENT=Ira TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:usersurname CONTENT=Chernova TAG POS=1 TYPE=BUTTON:SUBMIT FORM=ID:SendInfo ATTR=TXT:SendInfo STOPWATCH >Результаты измерений сохраняются в ImacrosDownloadsperformance_Stopwatch.csv.

Обработка ошибок

По умолчанию в случае возникновения какой-либо ошибки выполнение макроса останавливается. Этого можно избежать, прописав в начале !ERRORIGNORE YES.

Использование прокси-серверов

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

PROXY ADDRESS=127.0.0.1:8888

Альтернативы

Запись видео

Если ты хочешь запечатлеть лучшие моменты работы iMacros на видео — используй плагин Capture Fox для Mozilla или Screencastify для Chrome.

SRC

В приложении к журналу есть девять шаблонов макросов (с русскоязычными комментами), которые ты сможешь приспособить для решения следующих задач:

  • заполнение полей форм из CSV-файлов;
  • извлечение данных из таблицы в CSV-файл;
  • установка значений в селектах и переключателях (radio buttons);
  • сохранение картинок с сайта;
  • обработка всплывающих JS-диалогов;
  • печать страницы;
  • создание скриншотов;
  • измерение времени на загрузку отдельных элементов страницы и выполнение сценариев;
  • извлечение данных из форм и прочих частей веб-сайта.

Заключение

В этой статье рассмотрены возможности iMacros, позволяющие решать тривиальные проблемы, с которыми может столкнуться любой IT-специалист или просто активный пользователь инета. Всего же инструмент включает в себя более полусотни команд, обозреть которые в формате журнала невозможно. Поэтому, если ты не нашел здесь ничего, что могло бы облегчить твою рутину в Сети, не отчаивайся и загляни в документацию или на форум imacros.net.

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru