Бот для парсинга и автоматического изменения цен в Kaspi
Бот после добавления аккаунта от каспи магазина парсит текущие товары продавца. После этого пользователь может включить/отключить автоматический парсинг. Бот, переходит на страницу товаров продавца и ставит города указанные в личном кабинете, и сравнивает цену у конкурента и у пользователя. Бот будет пытаться держать заданный интервал от минимальной цены конкурента, но не будет отпускать ниже указанной минимальной цены. У каждого пользователя есть собственный xml документ, где вносятся изменения цен. Ссылка на данный xml документ должна указываться в личном кабинете xml, что позволяет менять цены автоматом, без участия пользователя!
Что под капотом: Из-за динамичной прогрузки страниц kaspi, пришлось использовать headless-browser, а именно модуль symfony/panther. Парсер имитирует живого человека: открывает браузер, заходит на сайт, ждет, кликает и т.д. Каждый такой процесс формирует очереди. Всего тут 4 типа очередей и 6 воркеров. Добавление товаров магазина, генерация xml документа и добавление магазина каспи имеют по одному воркеру каждой, а парсинг продуктов и их сравнения имеет 3 параллельных воркеров. Для очередей и воркеров был использован supervisor. Сам костяк сервиса сделан на laravel, в качестве БД использован mysql, а верстка на bootstrap.
#PHP #laravel #Веб-разработка #Парсинг #xml #Multithreading
Что под капотом: Из-за динамичной прогрузки страниц kaspi, пришлось использовать headless-browser, а именно модуль symfony/panther. Парсер имитирует живого человека: открывает браузер, заходит на сайт, ждет, кликает и т.д. Каждый такой процесс формирует очереди. Всего тут 4 типа очередей и 6 воркеров. Добавление товаров магазина, генерация xml документа и добавление магазина каспи имеют по одному воркеру каждой, а парсинг продуктов и их сравнения имеет 3 параллельных воркеров. Для очередей и воркеров был использован supervisor. Сам костяк сервиса сделан на laravel, в качестве БД использован mysql, а верстка на bootstrap.
#PHP #laravel #Веб-разработка #Парсинг #xml #Multithreading