Производитель рулевых реек хотел понимать, как его позиции выглядят на маркетплейсе автозапчастей рядом с конкурентами. Вопрос простой: по каждому артикулу — почём его продают разные продавцы и что рядом предлагают другие бренды. Ответа на него площадка не даёт: выгрузки нет, а руками это значит открыть артикул, сравнить предложения нескольких продавцов, записать в таблицу и повторить несколько сотен раз. К концу списка начало уже устаревало.
Прайс-сервис у площадки есть, но он закрытый: работает по SOAP, только для авторизованных и с суточным лимитом запросов. Превысишь — аккаунт блокируют до конца суток.
Я написал парсер, который собирает эти цены сам и складывает их в таблицу сравнения. Набор брендов и продавцов задаётся в настройках, поэтому под новую задачу правится конфиг, а не код.
Как устроен мониторинг цен конкурентов
- клиент сам авторизуется в сервисе, держит сессию и переподключается, когда её сбрасывают;
- по каждому артикулу опрашиваются два режима выдачи — собственные предложения и аналоги: без второго не видно конкурентов, без первого теряются позиции самого производителя, потому что в кросс-выдачу они не попадают;
- одно и то же предложение приходит в двух режимах под разными идентификаторами, поэтому дубли отсеиваются по смыслу позиции, а не по коду;
- суточный лимит заложен в сценарий: прогон останавливается, не доходя до блокировки, и продолжается на следующие сутки с того же места;
- шесть параллельных потоков, ответы пишутся построчно сразу, повторный запуск добирает только недостающее и ничего не задваивает;
- фильтр по словам отсекает лишнее: в отчёт идут только нужные позиции, а не весь каталог продавца.
Мусор в данных лечится отдельно
Часть продавцов отдаёт названия, где кириллица подменена типографскими знаками: вместо «Рулевая рейка без ГУР новая» приходит нечитаемая каша. Готового декодера под такую подмену нет, поэтому я сличил испорченные и чистые названия одних и тех же артикулов, вывел таблицу соответствий символов и восстановил тексты. Без этого фильтр по словам просто не находил нужные позиции, и они молча выпадали из отчёта.
Что на выходе
- книга Excel, где строка — артикул, а столбцы разложены парами «бренд и продавец» с ценой каждого;
- рядом с ценами производителя — альтернативы других брендов по тому же запросу;
- отдельный лист диагностики: что нашлось, что отфильтровалось и почему, чтобы пустая клетка не выглядела загадкой;
- сырые ответы сервиса сохраняются отдельно, поэтому поправить логику отчёта можно без нового обхода площадки.
Результат
Сравнение цен собирается само и укладывается в суточный лимит площадки. Вместо ручного обхода сотен артикулов заказчик открывает готовую таблицу, где по каждой позиции сразу видно свои цены у разных продавцов и предложения конкурентов рядом. Прогон можно повторять хоть каждую неделю: он продолжается с места обрыва и не требует присмотра.



