Как добавить на сайт 20 000 товаров и не облажаться

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

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

Евгений Лукин
Руководитель проектов веб-студии Юсота

Меня зовут Евгений Лукин, руковожу проектами в веб-студии Юсота. Мы занимаемся запуском и наполнением интернет-магазинов, а также настройкой синхронизации цен и остатков. Сделали более 100 магазинов, поэтому набили много шишек, которыми хочу поделиться.

Импорт товаров мы делим на несколько этапов. Это помогает не запутаться, если работаешь один, а если работаешь в команде - можно параллелить задачи. Так будет быстрее.

Основные этапы

1

Сбор информации

Мы используем два метода сбора информации о товарах. Первый - взять из выгрузки поставщика. Второй - спарсить с сайта одного или нескольких поставщиков.

Парсинг используем чаще всего, потому что на 2022 год не все поставщики имеют возможность предоставлять выгрузку своим дилерам и партнёрам. Иногда поставщик вобще не знает, что он для кого-то поставщик) Например, IKEA или Tao Bao.

Для примера возьму один из кейсов - импорт товаров поставщика электротоваров IEK. Поставщик предоставляет прайс в Excel. В прайсе только основная информация о товарах:

  • артикул
  • наименование
  • категория
  • цена
  • ссылка на карточку товара на сайте поставщика

Ссылка есть - отлично. Я пишу программу, которая будет автоматически переходить по ссылке и собирать дополнительную информацию о товаре - ссылки на фото, описание и характеристики.

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

Таблица с товарами
Таблица с товарами
Таблица с изображениями
Таблица с изображениями
Таблица с характеристиками
Таблица с характеристиками

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

2

Скачиваем и обрабатываем фотографии

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

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

Дубли

Дубли бывают двух видов - одинаковые фотографии, но разные названия и одинаковые названия, но разные фотографии.

Разные товары с одинаковыми фотографиями
Разные товары с одинаковыми фотографиями

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

По поводу места на сайте. Все системы управления сайтами создают из одной фотографии несколько копий других размеров. Один размер будет показываться в карточке товара, другой в списке категорий, третий в корзине, четвертый в админке и т.д. То есть, загружая одну фотографию - вы получите от 3-х и более дополнительных копий. Проблема в том, что на хостинге может просто закончиться место.

Если у фотографий одинаковые названия, но разные ссылки, то при скачивании, ранее загруженная фотография будет перезаписана более поздней. Если это не проверить - у разных товаров будет одна и та же фотография. Чтобы исключить такую ошибку, я настраиваю программу так, чтобы она переименовывала фотографии при скачивании.

В качестве имён фотографий можно использовать транслитерацию названия товара, например у товара “ESCA Крестовина 35х50мм RAL 9016 IEK” название изображения может быть “esca_krestovina_35kh100mm_ral_9016_iek_1.jpg”. Есть миф, что это благоприятно влияет на SEO, но пока подтверждение этого мне не встречалось.

У однотипных товаров могут быть одинаковые фотографии. Например, как у крестовин, что были выше на фотографии.

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

Неадекватные размеры

Нормальный размер фотографии для обычного интернет-магазина - не более 1000 пикселей по меньшей стороне. Я сейчас не говорю про такие товары, где хочется разглядеть каждую деталь, как например в одежде.

А на сайтах некоторых поставщиков фотографии ну прямо огромные - мне встречались фотографии по 9000 px и размером под 15 мегабайт.

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

А подготовка фотографий для сайта отдаётся на откуп контент-менеджеру. К сожалению, иногда контент-менеджером завода выступает его сотрудник, не знакомый с тонкостями веба.

Поэтому часто встречаю фотографии в формате PNG. Хотя для интернет-магазинов лучше использовать JPG или WebP. Эти форматы уменьшают вес фотографий без потери качества и сайт быстрее открывается.

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

Ориентация

Если у нас на сайте все фотографии квадратные, а у поставщика вертикальные или горизонтальные, то конвертируем в требуемую ориентацию.

Как правило, делаем это одновременно с сжатием фотографий.

Для пакетной обработки фотографий используем xnConvert для Windows, ImageMagick для linux или библиотеку Pillow, если пишу программу на Python.

3

Раскладываем товары по категориям

Пока фотографии скачиваются и обрабатываются, параллельно занимаемся раскладыванием товаров по категориям.

Категории на сайте поставщика и на нашем сайте - всегда отличаются. А если собираем данные с сайтов разных поставщиков, то тем более.

Иногда эту работу выполняет сотрудник на стороне заказчика, так как он лучше разбирается в своей нише. Или если у заказчика есть свой SEO-специалист, то этот этап полностью поручаем ему.

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

К сожалению, эту работу полностью автоматизировать нельзя. Поэтому, при очень большом ассортименте мы делим задачу на два этапа.

На первом этапе оставляем только первый и второй уровни вложенности. Например, «Светильники / Интерьерные светильники». И загружаем товары на сайт, чтобы они уже были доступны для покупателей.

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

  • «Светильники / Интерьерные светильники / Люстры»
  • «Светильники / Интерьерные светильники / Настольные лампы»
  • «Светильники / Интерьерные светильники / Подвесные светильники»
  • «Светильники / Интерьерные светильники / Торшеры»
4

Загружаем товары на сайт

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

  • фотография
  • наименование
  • категория
  • цена
  • описание

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

Для импорта товаров на сайт чаще использую API. Но если такой возможности нет, используем разные модули импорта. В Битриксе свой встроенный модуль. В WordPress - WP All Import. В принципе, в каждой CMS есть свой импорт, в том числе и у маркеплейсов. Основная проблема - подготовить данные в нужном формате. Для большинства CMS у нас уже есть готовые шаблоны и написаны алгоритмы, как с ними работать.

5

Добавляем характеристики и настраиваем фильтрацию

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

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

Опять возвращаемся к тому, что названия и значения характеристик у поставщика 100% не будут совпадать с нашими.

Особенно это касается значений параметров:

  • 500 мл, 0.5 л, ½, через запятую или через точку - это всё один объем
  • черный, чёрный, Черный - это всё один цвет

Эту работу тоже нельзя полностью автоматизировать. Иногда на работу с характеристиками уходит не один месяц. Поэтому мы загружаем сначала только ключевой параметр «Бренд» или «Производитель». А остальные добавляем по мере приведения характеристик в порядок. Если поставщиков несколько - это превращается в особый вид боли.

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

6

Настраиваем обмен цен и остатков с поставщиком

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

Об обновлении цен нужно подумать в первую очередь.

Мы выявили несколько основных проблем с поставщиками. И под каждую ситуацию придумали своё решение.

Поставщик предоставляет файл выгрузки - идеально

Настраиваем синхронизацию по уникальному идентификатору, например по артикулу.

Несколько поставщиков и у всех разные форматы выгрузки - в csv, xlsx, yml, xml

Под каждого поставщика - пишем свою программу синхронизации

Поставщик не предоставляет файл выгрузки, говорит - всё есть на сайте

Настраиваем мониторинг цен с формированием своего файла выгрузки

Поставщик не предоставляет ни цены, ни остатки

Настраиваем синхронизацию с системой учёта заказчика - 1С или МойСклад

Для каждого заказчика мы пишем свою программу на Python, которая запускается на сервере по расписанию.

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

Заключительные мысли

  • импорт большого ассортимента товаров - работа не быстрая, приходится настраиваться на скучный, долгий и рутинный процесс. Но эта работа разовая.
  • импорт дробим на части. Это помогает выявить разные ошибки как можно раньше.
  • если у вас нет возможности поддерживать ассортимент в актуальном состоянии, отложите запуск интернет-магазина или, в крайнем случае, вместо цен можно поставить кнопку “Запросить цену”
  • наполнение товарами требует участия разных специалистов, в том числе SEO-специалиста и программиста, а также активного участия самого заказчика. Такую задачу сложно делегировать. И необходимо заранее придумать, как проверять эту работу.
6666 показов
854854 открытия
1 комментарий

Спасибо статью. Мне как раз сейчас необходимо работать с большим ассортиментом.

Ответить