Парсер для отслеживания понижения цен на товары с переданных страниц. Используется headless браузер. Работает на ozon, wildberries, vseinstrumenti и metro. При понижении цены отправляется сообщение в telegram чат с ботом.
bundle install
gem install foreman
npm install
- установить chrome и chromedriver. Инструкция
Запустить сервер командой bin/dev
.
Через веб интерфейс создать товар. На этом экране можно выбрать, в какой промежуток времени будет отслеживаться минимальная цена. Если указано "2 недели" - то при падении цены на товар, ниже минимальной за период в 2 недели, будет отправлено сообщение в чат с ботом.
При создании правила для парсера нужно указать адрес страницы и css селектор, по которому парсер должен будет получить текст тега.
Можно указать, в течении какого времени парсер должен ждать появление тега на странице.
cookies
указывать в виде json массива. Пример: {"metroStoreId"=>11, "pickupStore"=>11, "bannersCatalog"=>0}
При проверке правила, если значение тега получилось получить, оно будет выведено. Если возникла ошибка - будет выведен текс ошибки и
скрин страницы.
Скрины страниц сохраняются в директории tmp/screenshots/rules
parsers:parse_single_page
- запуск джобыSinglePageParserJob
в реальном времени без учёта последнего запускаparsers:parse_rule
- проверка какого-либо правила через джобуSinglePageParserJob
parsers:take_screenshot[url,timeout]
- сделать скрин страницы по переданному адресу.timeout
- время ожадиния появления тега на странице, по-умолчанию это тегdiv
.
При наличи правил для парсера, каждые 5 минут будет запускаться джоба SinglePageParserJob
. В ней получается список правил, по которым
прошедшие 2 часа парсер не отрабатывал.
Если по правилу было получено значение, отличное от последнего - оно запишется в базу, если оно окажется меньшим из всех минимум на 5%,
которые были(за период, указанный при создании товара) - будет отправлено уведомление в чат с ботом.
Если при проверке возникла ошибка - это будет записано в базу по типу ошибки. Если таких ошибок накопится больше определённого порога,
то будет отправлено уведомление об этом в чат.
Если после череды таких ошибок снова удастся получить значение, то история ошибок очистится.