Кейс · OpenCart · парсинг и автоматизация

Автоматизация каталога интернет-магазина: 9 000 товаров обновляются сами

Интернет-магазин климатической техники на OpenCart получил систему, которая забирает данные поставщика, проверяет их по вашим правилам и обновляет витрину по расписанию. Цены, остатки, фото и описания актуальны без ручной работы.

  • Цены и остатки обновляются по расписанию
  • В магазин попадают только нужные категории и бренды
  • Наценка, скидки и мета-теги считаются по вашим правилам
  • Ошибки приходят на почту раньше, чем их заметит покупатель
  • 45 000карточек в каталоге поставщика
  • 9 000товаров в магазине после фильтрации
  • 15 мининтервал импорта
Задача

Каталог поставщика на 45 000 карточек, а в магазине нужно 9 000

Поставщик ведёт свой каталог на сайте. Цены и наличие меняются каждый день, появляются новые модели, часть товаров снимают с продажи. Магазину нужна не вся витрина, а определённые категории и бренды.

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

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

Схема: данные поставщика проходят промежуточную базу и попадают в магазин
Решение

Что построили: сборщик, импортёр и админка

Три части, которые работают по расписанию на обычном хостинге и связаны промежуточной базой.

Сборщик

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

Импортёр

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

Веб-админка

Показывает очередь, историю запусков и товары. В ней же лежат все настройки, поэтому правки не требуют программиста.

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

Как это работает

Путь данных: от парсинга поставщика до записи в OpenCart

Каждая карточка проходит один и тот же маршрут.

  1. Сохранение в промежуточную базу

    Сборщик забирает со страницы поставщика цену, остаток, название, характеристики, описание, фото и категорию. Всё записывается без правок, в исходном виде.

  2. Фильтры

    Импортёр отсекает лишнее: категории и бренды, которых нет в вашем списке, товары с «уценкой» в названии, при желании товары без цены или без наличия. Для отдельной категории можно задать свой набор брендов.

  3. Сопоставление со структурой магазина

    Категории поставщика привязываются к вашим: существующие сопоставляются, недостающие создаются, а правила по названию товара переносят его в нужный раздел. Так же находятся или создаются производители, характеристики и опции.

  4. Мета-теги и ЧПУ

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

  5. Наценка и скидки

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

  6. Запись в магазин

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

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

Как это выглядит в админке: фильтры, цена и мета-теги

Админка импорта: выбор категорий и производителей для импорта
Фильтр по категориям и производителям: отмечаете только нужное
Админка импорта: фильтры по наличию и цене, формула наценки и псевдо-скидка
Фильтры по наличию, исключение по названию, наценка и режим скидки
Админка импорта: генерация ЧПУ и шаблоны мета-тегов
Генерация ЧПУ и шаблоны мета-тегов для новых и существующих товаров

Нужно связать каталог поставщика с магазином?

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

Результат по задачам

Что это решает: актуальные цены, остатки, фото и мета-теги

Восемь проблем ручного каталога, которые закрыла система.

Цены и наличие свежие

Каждая карточка перепроверяется через заданный срок. Изменение у поставщика попадает в магазин в течение часов, а не недель.

Только нужное

Вы выбираете категории и бренды. Товары с «уценкой» или «б/у» в названии отсекаются по списку слов.

Фото загружаются и проверяются

Если файл не загрузился или оборвался, система находит такие товары и собирает их заново. Лишние фото удаляются сами.

Цены по вашим правилам

Формула наценки, цена со скидкой или без, «псевдо-скидка». Ручная акция менеджера главнее автоматики.

Тексты как ваши

Мета-теги и ЧПУ строятся по вашим шаблонам. Правила замены убирают название поставщика и лишние фразы.

Категории и атрибуты сами

Дерево категорий, характеристики, производители и опции система заводит сама, правила перекладывают товар в нужный раздел.

Монтаж привязан к товарам

С сайта поставщика забираются услуги монтажа и привязываются к 3 400 товарам. Покупатель отмечает монтаж галочкой, в корзине он отдельной строкой.

Снятые товары убираются

Остаток снятого товара обнуляется сразу, а если он не появляется заданное число дней, система удаляет его вместе с фото.

Сравнение

Обновление каталога вручную и с автоматизацией

Что меняется в повседневной работе магазина.

Что нужноВручнуюС автоматизацией
Обновить цены и остаткиВыгрузка, правка, загрузка в магазинПроисходит по расписанию
Добавить новую модельСоздать карточку, загрузить фото, заполнить характеристикиКарточка появляется сама
Убрать снятый товарЗаметить, найти, удалитьОстаток обнуляется сразу, карточка удаляется по сроку
Поменять наценкуПересчитать все ценыМеняете формулу в настройках
Поправить текст у всех товаровПравить по одномуОдно правило замены
Заметить сбойУзнать от покупателяПисьмо на почту

Для магазина с ассортиментом в тысячи позиций ручной вариант просто нереален, а автоматизация делает его управляемым.

Контроль

Контроль без постоянного наблюдения: письма и история запусков

Система сама сообщает о проблемах, а в админке видно, что произошло при каждом запуске.

  • Порог ошибок: при большом числе ошибок сбора или импорта на почту приходит письмо
  • Отдельное письмо предупреждает, если запуск завис или сбор не завершался успешно заданное время
  • По желанию приходит отчёт за день, неделю или месяц: сколько обновлено, сколько ошибок, в чём причина
  • В админке видна история запусков: сколько товаров обработано, что не получилось и почему

Так владелец магазина узнаёт о проблеме раньше покупателя и может решить её, не разбираясь в коде. На скриншоте ниже очередь сбора: видно статус каждой карточки, число попыток и причину последней ошибки, например «страница товара пуста (удалён у поставщика)».

Админка импорта: очередь сбора со статусами и ошибками
Очередь сбора: статусы карточек, число попыток и причина последней ошибки
Надёжность

Устойчивость к изменениям поставщика и защита от собственных ошибок

Любой парсер рано или поздно сталкивается с изменениями на сайте-источнике и с ошибками в настройках. Эти случаи мы учли.

Когда меняется сайт поставщика

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

Защита магазина от собственных ошибок

На раннем этапе одна из настроек сроков привела к удалению нескольких тысяч товаров. Витрину восстановили из промежуточной базы, а в систему добавили три предохранителя:

  • удаление отменяется, если под него попадает больше заданной доли каталога
  • удаление отменяется, если сбор обошёл слишком мало категорий поставщика
  • товар не считается пропавшим, пока его не пересобрали заново
Технологии

На чём это работает

Обычный виртуальный хостинг, без выделенного сервера и сложной инфраструктуры.

  • Python: сборщик
  • SQLite: очередь задач и журнал
  • Пул прокси с настраиваемой стратегией
  • PHP 7.4: импортёр в OpenCart / ocStore 3
  • PHP: админка с отдельным входом и правами
  • cron на виртуальном хостинге
  • Собственный SMTP-клиент, письма в HTML

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

Итог

Итог для владельца магазина

Что изменилось в повседневной работе магазина.

Каталог без участия сотрудников

9 000 товаров обновляются автоматически, ручной работы с прайсами и карточками нет.

Цены и наличие совпадают

Витрина совпадает с данными поставщика с запаздыванием в часы.

Настройки за минуты

Ассортимент, наценка и тексты меняются в админке без программиста.

Проблемы приходят на почту

Владелец узнаёт о сбое раньше покупателя.

Витрина защищена

Три предохранителя не дадут удалить лишнее при сбое или ошибке настроек.

Растёт вместе с магазином

Можно добавить новые категории, бренды и правила без переделки системы.

Нужна такая же автоматизация?

Подключаем каталоги поставщиков к OpenCart и другим платформам. Разберём ваш источник и оценим сроки.

Вопросы и ответы

Частые вопросы об автоматизации каталога

Как автоматически обновлять каталог интернет-магазина из данных поставщика?

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

Нужен ли для этого выделенный сервер?

Нет. В этом проекте всё работает на обычном виртуальном хостинге: сборщик и импортёр запускаются по cron, админка открывается в браузере.

Что будет, если поставщик изменит свой сайт?

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

Можно ли обновлять в магазине только нужные категории и бренды?

Да. Вы выбираете категории и бренды, для отдельной категории можно задать свой набор. Товары с «уценкой» и подобными словами в названии отсекаются, а товары без цены или наличия можно не выгружать.

Как настраивается наценка и скидки?

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

Как защищён магазин от ошибок импорта?

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

Подходит ли такое решение для WooCommerce или другой платформы?

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

Сколько стоит такая автоматизация?

Цена зависит от источника данных, объёма каталога и числа правил. Ориентиры по отдельным работам: парсер на заказ от 5 000 ₽, автообновление цен и остатков от 7 000 ₽, подробности на страницах парсинга и импорта. Систему с админкой и контролем считаю индивидуально.

Можно ли вытащить данные, если у поставщика нет выгрузки или API?

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

Работаете ли вы с клиентами из других городов?

Да, работаю удалённо с компаниями из любого региона России.

Обсудим автоматизацию вашего каталога

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