Разработка бота-парсера наличия товаров у конкурентов

Ассортимент и цены у конкурентов меняются каждую неделю, а ручной обход карточек съедает часы и всё равно опаздывает. Мы разрабатываем парсеры наличия товаров под ключ: настроим сбор, сравнение и оповещения по вашим категориям, чтобы ручной контроль сократился в разы.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка бота-парсера наличия товаров у конкурентов
Средний
~3-5 дней
Часто задаваемые вопросы

Парсер наличия товаров: где ломается сбор данных

Парсер наличия товаров решает одну задачу — регулярно отдавать актуальную картину по чужому каталогу: что есть на складе, что ушло, что вернулось. Пока выборка чистая, закупщик работает по факту. Как только в цепочке «источник → разбор → хранилище → отчёт» появляется рассогласование, данные становятся опаснее их отсутствия: по ним принимают решения.

Самый частый сбой — устаревшие остатки в каталоге. Выгрузка забирается целиком и перезаписывается раз в сутки, хотя источник обновляется чаще; часть страниц отдаётся из кэша, и сбор данных о наличии фиксирует вчерашнее состояние как текущее. Закупщик видит «в наличии», а позиция разобрана ещё утром.

Второй класс — пустые карточки после смены разметки. Разбор держится за конкретные элементы страницы: при редизайне блока цены или склада узел пропадает, и сборщик молча возвращает «нет в наличии» вместо ошибки разбора. Отчёт выглядит валидным, но половина каталога в нём — ложные нули.

Третий — расхождение склада и витрины. Товар лежит в учётной системе (1С), но не опубликован, или наоборот: карточка открыта, а остаток не проведён. Без сверки этих двух источников мониторинг каталога конкурента показывает то, что видит покупатель, а не то, чем реально торгует поставщик.

Дальше подключается ручная работа: закупщик открывает десятки страниц и перепроверяет спорные позиции, потому что доверия к выгрузке нет. Разбираем, как это закрывается — от контроля свежести и проверки целостности разбора до сигналов о расхождении.

Что даёт постоянный сбор данных о наличии и ценах

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

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

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

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

Методы сбора данных: сравнение и ограничения

Выбор способа сбора определяет не только скорость запуска, но и то, сколько времени уйдёт на поддержку через полгода. Разбираем четыре варианта, между которыми реально выбирают: обмен данными с сайтом через программный интерфейс, обход страниц каталога, готовая выгрузка от поставщика и сторонний сервис мониторинга.

Метод Когда подходит Ограничения
Программный интерфейс сайта Поставщик сам отдаёт остатки и цены Лимиты запросов, авторизация по ключу, часть полей закрыта, схема ответа меняется без предупреждения
Обход страниц каталога Интерфейса нет, нужны остатки по складам и городам Держится на вёрстке, капча и защита от автоматических запросов, селекторы ломаются после смены шаблона
Готовая выгрузка от поставщика Есть договор и регламент обмена прайс-листом Обновление раз в сутки, форматы CSV/XLS, часть полей не отдаётся, лаг между выгрузкой и фактом
Сторонний сервис мониторинга Быстрый старт по короткому списку площадок Ограниченный набор источников, сырые данные недоступны, свою логику сравнения задать нельзя

На практике методы почти всегда комбинируются: где есть интерфейс — работаем через него, остальное закрываем обходом каталога, а выгрузка поставщика идёт резервным каналом на случай недоступности. Данные из всех источников приводим к единой схеме: артикул, площадка, остаток, время замера. Тогда сбой одного канала не роняет сбор, а расхождения между источниками видно сразу.

Этапы разработки: от разбора задачи до запуска

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

  1. Аудит источников данных. Разбираем каждый сайт: есть ли открытый программный интерфейс или только разметка карточек, как устроена пагинация, нужен ли обход региональных поддоменов. На выходе — перечень источников с частотой обновления и правилами сопоставления товаров.
  2. Схема сбора и ключ сопоставления. Берём стабильный идентификатор — артикул или штрихкод, — чтобы переименование карточки не давало ложное «нет в наличии». Поведение при смене разметки описываем заранее: сигнал об ошибке вместо тихой пустой выгрузки.
  3. Сборка ядра на одном-двух источниках. Обкатываем хранение и сравнение цен на простых сайтах, прежде чем подключать остальные. Так ошибки логики всплывают до того, как в схеме появится десяток источников.
  4. Расписание обновлений. Интервал подбираем под задачу, запуски разносим по времени, ограничиваем число одновременных обращений и ставим повторы при сетевых сбоях, чтобы чужие серверы не видели в нас нагрузку.
  5. Тестовый прогон. Сверяем результат с ручной выборкой по нескольким десяткам карточек, считаем долю расхождений и смотрим, что бот делает с позициями, снятыми с продажи или скрытыми из каталога.
  6. Приёмка. Проверяем на реальном наборе: полнота по каждому источнику, свежесть данных к моменту отчёта, число ложных срабатываний. Критерии согласуем до запуска, чтобы приёмка была формальностью, а не спором.
  7. Передача и обучение. Отдаём конфигурации, документацию и инструкцию по подключению нового источника, показываем, как читать журнал ошибок. Дальше цикл обновления бота команда заказчика ведёт сама.

Комплект поставки: код, схемы, регламенты обновления

После сдачи у заказчика остаётся не сервис на нашей стороне, а полный комплект: код, документация на бота и регламенты, по которым систему можно развивать своими силами или передать другой команде без обратного проектирования. Перечень фиксируем в акте — каждая позиция проверяется на приёмке.

  • Исходный код — репозиторий с историей изменений, разделённый на модули: обход источников, разбор страниц, сопоставление товаров, отправка оповещений.

  • Схема сбора данных — перечень источников и полей по каждому, частота обхода, признаки отсутствия товара в наличии, правила паузы при ограничениях на стороне источника.

  • Правила сопоставления — по каким признакам товар считается одним и тем же у разных продавцов, как обрабатываются дубли и переименования, таблица исключений.

  • Документация на бота — инструкция запуска с нуля, состав окружения, где хранятся ключи доступа и как их менять без правки кода.

  • Регламент обновления — периодичность ревизии источников, порядок подключения нового магазина, действия при смене разметки страниц у источника.

  • Передача доступов — учётные записи, роли, порядок ротации ключей при уходе сотрудника, за кем закреплён каждый доступ.

  • Хранение истории — глубина хранения снимков наличия и цен, расписание очистки, формат выгрузки для аналитики.

  • Регламент поддержки — время реакции на сбой сбора, порядок восстановления и контроль, при котором молчание бота не читается как «товар есть».

Кейс: контроль ассортимента в розничной сети

Розничная сеть с ассортиментом в несколько тысяч позиций держала контроль наличия у конкурентов вручную: категорийные менеджеры обходили карточки на маркетплейсах и сайтах поставщиков, сверяли остатки в общей таблице и вносили правки руками. Полная сверка занимала у команды из трёх человек почти два рабочих дня, поэтому изменения обнаруживались с задержкой — уже после того, как товар уходил из наличия, а решение по закупке принималось вслепую.

Что изменили

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

Что стало

Сверка занимает 15–20 минут вместо двух дней, а сводка приходит до открытия смены. Доля изменений, пойманных в первые сутки, выросла с 40% до 95% — закупка реагирует, пока конкурент ещё не разобрал склад. Ручных операций стало в разы меньше: менеджер разбирает только подозрительные расхождения, а не весь список. Когда на одном источнике дважды менялась разметка, сбор восстанавливали за 20 минут правкой селекторов, без переписывания логики.

Чем отличается сбор через программный интерфейс от обхода страниц?

Если у магазина есть программный интерфейс, наличие приходит готовыми полями: остаток по складу, статус «в наличии» или «под заказ», срок поставки. Мы забираем десятки и сотни позиций за один запрос и получаем набор значений, который не зависит от того, как в этот момент отрисована карточка на сайте. Скорость и устойчивость сбора здесь максимальные, пока договорённость с источником не поменялась.

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

Программный интерфейс или обход страниц — это не выбор «или-или». Чаще основной канал — интерфейс, а обход работает страховкой: подтверждает наличие по точкам продаж, которые интерфейс не покрывает, и подстраховывает, когда ответы приходят с задержкой. В обратную сторону это тоже работает: при отсутствии интерфейса обход закрывает всё, а интерфейс подключается позже, если магазин его открывает.

Разница видна в поддержке. Интерфейс меняется редко, но ломается целиком — нужен контроль формата ответов и оповещение об отклонениях. Разметка меняется часто, но точечно — нужны эталонные истории и автоматический сигнал при росте доли пустых полей. Выбор диктует покрытие нужных полей, а не удобство разработки.

Сомнения по нагрузке, блокировкам и поддержке

Сбор данных с чужого каталога — это вопрос темпа и правил: частоту обращений, число одновременных сессий и список страниц мы задаём в настройках, а не оставляем на волю случая. Поток запросов держим ниже того, что даёт обычный поисковый робот, — нагрузка на сайт конкурента остаётся незаметной для его владельца.

Ниже — сомнения, которые чаще всего звучат до старта: блокировка запросов, правовые рамки сбора, ложные срабатывания и поддержка после запуска.

Что будет, если сайт начнёт блокировать запросы?

Отказ или ограничение распознаётся сразу: сборщик снижает темп, повторяет обращение с нарастающей паузой и, если доступ закрыт полностью, переключается на открытые каналы — фиды и карты сайта. Замедление для нас предсказуемо: наличие товара редко меняется чаще, чем раз в час.

Какие правовые рамки сбора данных?

Работаем только с открытыми сведениями о наличии и цене — без авторизации, личных кабинетов и персональных данных. К каждому снимку сохраняем адрес источника и время получения: это основа для сверки и разбора спорных случаев.

Как отсекаете ложные срабатывания?

Изменение подтверждается повторным запросом через несколько минут и сравнением с предыдущим снимком. Если наличие вернулось к исходному, событие помечается шумом и в оповещение не идёт — в отчёт попадают только устойчивые изменения.

Кто отвечает за работу после запуска?

Разметка чужих страниц меняется, поэтому после передачи остаётся регламент: контроль доли успешных снимков, оповещение о падении и о смене структуры, плановое обновление правил разбора. Отдаём документацию по полям и порядок самостоятельного запуска.

Обсудим задачу: схема сбора и план запуска

Чтобы вернуться с оценкой и планом, а не с уточняющими вопросами, нужен минимум исходных данных. Ниже — что прислать на обсуждение задачи: этого достаточно, чтобы посчитать объём работ, собрать схему сбора и назвать сроки.

  • Список источников — площадки и разделы, где нужно отслеживать наличие: адреса каталогов, категорий, страниц товаров.
  • Списки товаров — артикулы, названия или ссылки на карточки, по которым сверяем позиции; если списков несколько, укажите, чем они отличаются.
  • Требуемые поля — что именно фиксируем в выгрузке: статус наличия, остаток, срок поставки, адрес карточки, время замера.
  • Частота обновления — раз в сутки, раз в час или по событию; от этого зависит схема обхода и объём хранения истории.
  • Формат выгрузки — таблица, файл или запись в вашу учётную систему, а также нужна ли история изменений и на какую глубину.
  • Доступы и ограничения — где требуется авторизация, есть ли ограничения на число обращений и требуется ли работать через ваш прокси-контур.
  • Правила реакции — кому и как сообщать об изменении: письмо, уведомление в мессенджере или отдельная сводка.

С этим набором мы возвращаемся с планом работ: схема сбора по каждому источнику, этапы, состав команды, порядок проверки данных на тестовой выборке и условия сопровождения после запуска. Опишите задачу — пришлём оценку и план.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060