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

Интернет-магазины, их разработка, продвижение и администрирование – это отдельное направление деятельности нашей команды, который имеет свои уникальные особенности. Одна из них заключается в том, что разработка интернет-магазина – это лишь первый шаг к запуску полноценного бизнеса. Помимо этого много сил тратится на формирование структуры, настройку, подключение к различным сервисам, администрирование, управление ассортиментом и так далее.
И чем больше товаров в каталоге, те более сложным может быть его заполнение. Если речь идет о магазине, в котором 50-150 товаров, многие изменения можно вносить вручную, без сложных доработок. Совершенно другого подхода требуют сайты, на которых размещаются тысячи, десятки или даже сотни тысяч позиций.
О проекте
Сегодня мы рассмотрим именно такой случай: интернет-магазин автозапчастей для BMW, в котором представлено 273000 (!!!) товаров. В этом кейсе мы расскажем об опыте парсинга каталога с последующим импортом на сайт клиента для его заполнения.
Сам интернет-магазин Вы сможете посмотреть по ссылке.
Парсинг – автоматизированный сбор информации с целевого сайта или сайтов (так называемых “сайтов-доноров”) для последующего использования полученных данных при решении определенных задач (например, для заполнения каталога интернет-магазина).
Парсинг официального справочника автозапчастей БМВ имел ряд особенностей:
Сложная, многоуровневая рубрикация
Многие запчасти подходят к десяткам различных моделей авто. Таким образом, при 273000 товаров на выходе мы получили более миллиона (!!!) цепочек категорий (Серия > Модель > Подмодель > Тип запчасти > Узел). В этой связи рубрикацию пришлось парсить и группировать отдельно.
Нюанс был ещё и в том, что для корректного импорта необходимо было собрать все цепочки категорий в одной ячейке таблицы. Но ни один из редакторов (excel, libreoffice, openoffice) не может сосредоточить в одной ячейке более 33 000 символов. Поэтому файлы нужно было изначально подготавливать нужного вида в парсере с помощью дополнительного ПО.

Ограничение скорости парсинга
Учитывая огромные массивы данных, мы ограничили скорость работы бота. В противном случае парсинг был бы похож на ddos-атаку на целевой сайт, что привело бы либо к его неработоспособности, либо к блокировке нашей активности. В итоге сбор информации занял около 10 дней.
Общий вес выгрузки
Общий вес выгрузки составил 1,78 ГБ. И это только csv-файлы с текстовым содержимым, не считая изображений, объем которых составил более 10Гб. Всё это накладывало дополнительные сложности, связанные с передачей и хранением данных.

Проблемы и решения
Однако, учитывая объем данных, и здесь не обошлось без сложностей. В процессе выяснилось, что сервер клиента не выдерживает нагрузки. Импорт затянулся. Файлы грузились часами, приходилось постоянно следить за процессом, чтобы не пропустить появление ошибок.
Но и с этой задачей мы справились успешно, проведя ряд мероприятий:
- перенесли сайт клиента на более мощный выделенный сервер (VPS), который удалось настроить для решения нашей задачи;
- оптимизировали структуру csv-файлов для профилактики перегрузок сервера при импорте (ошибок 503 и 504);
- провели импорт товаров в интернет-магазин в несколько подходов: отдельно характеристики и фото товаров, отдельно – рубрикация.
Что получилось?
-
273 000
товаров с фотографиями и характеристиками
-
40 000
уникальный категорий в рамках 5-уровневой структуры
Комментарии