Amazon использует динамическое ценообразование, и цены на интересующие нас товары могут варьироваться в зависимости от многих факторов.
Мы создадим инструмент для установки ценовых оповещений на любой товар Amazon. Не более 50 строк кода.
TL; DR: код проекта доступен здесь: https://github.com/MartinRdw/amazon-price-tracking, не стесняйтесь клонировать / развертывать на Heroku it
Для этого мы будем использовать:
- Puppeteer: библиотеку узлов, которая предоставляет высокоуровневый API для управления Chrome
- Zenaton : сервис SaaS, позволяющий быстро создавать задачи и рабочие процессы
Puppeteer позволит нам очистить страницу продукта Amazon, чтобы узнать текущую цену, а Zenaton позволит нам запускать код каждые X часов и отправлять оповещения.
Конфигурация
Чтобы начать использовать Зенатон, вам необходимо выполнить 4 шага:
- Подпишите здесь"
- Скачайте и установите Zenaton Agent на свой компьютер:
curl https://install.zenaton.com | sh
- Настройте его с помощью учетных данных Zenaton.
Мы будем использовать a.env
file, проще всего клонировать репозиторий примера здесь: https://github.com/zenaton/examples-node
git clone https://github.com/zenaton/examples-node cp -n .env.example .env
Если вас не интересуют примеры, вы можете просто оставить файлы boot.js, client.js, .env и package.json.
Обновите .env
своими учетными данными с https://app.zenaton.com/api и запустите npm i
.
- Запустить Зенатон Агент
Запустите агент и заставьте его слушать вашу конфигурацию:
zenaton start && zenaton listen — env=.env — boot=boot.js
Создание рабочего процесса
Рабочий процесс примет в качестве параметров 4 переменные:
- Название продукта
- URL продукта
- Цена оповещения
- Количество часов между каждой проверкой
touch Workflows/TrackAmazonPrice.js
Код довольно прост:
Некоторые пояснения:
Мы используем функцию ожидания Zenaton, чтобы ждать 4 часа между каждым анализом цен https://zenaton.com/documentation/node/workflow-waiting/#duration
Чтобы отправить оповещение, я решил использовать одну из новых функций Zenaton для получения сообщения в Slack: коннекторы.
Чтобы настроить новый коннектор, вам просто нужно перейти сюда: https://app.zenaton.com/connectors
Найдите Slack и нажмите Добавить.
Заменитеyour_slack_conenctor_id
в коде на идентификатор, который у вас здесь:
Подробнее о разъемах здесь: https://zenaton.com/documentation/node/api-connectors
Создание задачи
Нам все еще нужно создать Task, который позволит нам узнать цену на Amazon. TheGetAmazonProductPrice
нашего кода рабочего процесса.
touch Tasks/GetAmazonProductPrice.js
Здесь мы будем использовать Puppeteer:
npm -i puppeteer
Цель задания:
- Откройте браузер Chromium
- Перейти к URL-адресу продукта Amazon
- Очистите веб-страницу, чтобы найти
#attach-base-product
selector (цена указана в этом поле) - Вернуть цену
Код:
Несколько используемых функций Puppeteer хорошо документированы здесь: https://github.com/puppeteer/puppeteer/blob/master/docs/api.md
Запустить рабочий процесс
Нам осталось запустить рабочий процесс.
touch launch_amazon_workflow.js
Это пример получения предупреждения, когда стоимость iPhone 11 Pro упадет ниже 1000 долларов:
Просто запустите node launch_amazon_workflow.js
, чтобы запустить рабочий процесс.
withTag()
позволяет нам дать имя каждому нашему рабочему процессу. Благодаря этому, вернувшись в Дашборд Зенатон, мы можем увидеть отслеживаемые товары:
Код доступен здесь: https://github.com/MartinRdw/amazon-price-tracking/tree/no-web-app
Бонус: Frontend + развертывание на Heroku
Вы можете создать интерфейс для более удобного взаимодействия с рабочими процессами Zenaton:
Он состоит из:
Код (с клиентским приложением + развертывание на Heroku) доступен здесь: https://github.com/MartinRdw/amazon-price-tracking