Автоматическое скачивание и загрузка изображений товаров

Автоматическое скачивание и загрузка изображений товаров

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

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

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

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

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    984
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1249
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    986
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    999

Автоматическое скачивание и загрузка изображений товаров

При импорте товаров из прайса поставщика изображения — главный тормоз. Без автоматизации вы тратите часы на скачивание, оптимизацию и загрузку каждой картинки. А если поставщик меняет ссылки или добавляет новые позиции, процесс повторяется снова. Наша команда с 7-летним опытом автоматизации импорта обработала уже более 5 миллионов изображений для десятков интернет-магазинов. Мы автоматизируем этот pipeline: парсинг ссылок из YML, CSV или API, скачивание с повторными попытками, валидацию MIME-типов, конвертацию в WebP и сохранение в хранилище. В результате магазин получает готовые к использованию изображения без ручного труда. Экономия времени достигает 90% уже на первом массовом импорте.

Почему автоматизация критична для интернет-магазина?

При каталоге от 1 000 товаров ручная обработка каждой картинки занимает дни. Ошибки оператора — неправильный размер, не тот файл, потеря ссылки — ведут к неполноте карточек и падению конверсии. Наше решение гарантирует, что 100% изображений будут загружены, оптимизированы и привязаны к товару за считанные минуты. Согласно документации Intervention Image, конвертация в WebP снижает вес файлов на 30-50% без потери качества для пользователя.

Как избежать дублирования при импорте?

Дедупликация реализована на двух уровнях. Перед скачиванием проверяется source_url в таблице product_images. Если URL уже существует и файл на диске — задача пропускается. Для дополнительной защиты вычисляется SHA-256 первых 4 КБ содержимого: одинаковые файлы по разным ссылкам не скачиваются дважды. Это критично при работе с поставщиками, которые могут повторно передавать один и тот же товар с разными URL.

Как мы это делаем: пошаговый план

  1. Анализируем формат прайса поставщика (CSV, YML, API, FTP).
  2. Разрабатываем парсер ссылок с учётом структуры данных.
  3. Настраиваем очередь ImageDownloadJob с повторными попытками и тайм-аутами.
  4. Внедряем валидацию MIME-типов и ограничение размера.
  5. Реализуем конвертацию в WebP с генерацией нескольких размеров.
  6. Добавляем дедупликацию по URL и хэшу содержимого.
  7. Настраиваем мониторинг dead-ссылок и отчёты.
  8. Проводим нагрузочное тестирование и обучение администраторов.

Техническая реализация: скачивание, валидация и оптимизация

В основе лежит Laravel Queue c отдельным connection для изображений. Класс ImageDownloadJob скачивает файл с помощью HTTP-клиента, проверяет размер (макс. 20 МБ) и MIME-тип (JPEG, PNG, WebP, GIF). Затем через Intervention Image (v3) и Spatie Image Optimizer выполняется ресайз и конвертация в WebP с тремя размерами: full (1200x1200), catalog (400x400), thumbnail (100x100).

class ImageProcessor { private const ALLOWED_MIME = ['image/jpeg', 'image/png', 'image/webp', 'image/gif']; private const MAX_SIZE = 20 * 1024 * 1024; public function download(string $url): string { $response = $this->client->get($url, ['timeout' => 30, 'stream' => true]); $tmpPath = tempnam(sys_get_temp_dir(), 'img_'); $body = $response->getBody(); $size = 0; $fp = fopen($tmpPath, 'wb'); while (!$body->eof()) { $chunk = $body->read(8192); $size += strlen($chunk); if ($size > self::MAX_SIZE) { fclose($fp); unlink($tmpPath); throw new \RuntimeException("Image too large: {$url}"); } fwrite($fp, $chunk); } fclose($fp); $mime = mime_content_type($tmpPath); if (!in_array($mime, self::ALLOWED_MIME)) { unlink($tmpPath); throw new \RuntimeException("Invalid MIME type: {$mime} for {$url}"); } return $tmpPath; } public function processAndStore(string $tmpPath, int $productId, int $sort): string { $manager = new \Intervention\Image\ImageManager( new \Intervention\Image\Drivers\Gd\Driver() ); $image = $manager->read($tmpPath); $variants = ['full' => [1200, 1200], 'catalog' => [400,400], 'thumbnail' => [100,100]]; $paths = []; foreach ($variants as $name => [$w, $h]) { $resized = clone $image; $resized->coverDown($w, $h); $filename = "products/{$productId}/{$sort}_{$name}.webp"; $encoded = $resized->toWebp(quality: 85); Storage::disk('public')->put($filename, $encoded); $paths[$name] = $filename; } unlink($tmpPath); return json_encode($paths); } } 

Метод coverDown обрезает изображение по центру, сохраняя пропорции — стандарт для каталожных фото. Конвертация в WebP снижает вес файлов на 30-50% без потери качества.

Обработка ошибок и битые ссылки

При 404 или битой ссылке задача делает 3 попытки с интервалом 30 секунд. Если все неудачны — ссылка помечается как dead. Раз в неделю администратор получает отчёт с предложением загрузить изображение вручную. Уже сохранённые изображения не удаляются, чтобы не нарушать существующие карточки.

Параллелизм и производительность

Параметр Значение
Очередь images (отдельная от default)
Воркеры на очередь 4–8
Таймаут задачи 60 сек
Размер чанка URL в Job 10 штук
Повторных попыток 3

При 10 000 изображений с 4 воркерами время полного цикла — 20–40 минут (зависит от скорости сервера поставщика). Очередь images не блокирует другие процессы.

Сравнение: ручной импорт vs наш сервис

Критерий Ручной импорт Наш сервис
Время на 5000 картинок 20-30 часов 10-20 минут
Ошибки (пропуски, дубли) 5-10% <0.1%
Формат на выходе Исходный WebP в 3 размерах
Необходимость контроля Постоянная Только отчёты о dead-ссылках

Автоматизация окупается уже на первом массовом импорте. Свяжитесь с нами — наши инженеры бесплатно оценят ваш проект и предложат оптимальное решение.

Что входит в работу

  • Парсинг ссылок из CSV, YML, API, FTP.
  • Разработка ImageDownloadJob с повторными попытками и тайм-аутами.
  • Валидация MIME и размера.
  • Конвертация в WebP с настраиваемыми размерами.
  • Дедупликация по URL и хэшу.
  • Мониторинг dead-ссылок и отчёты.
  • Документация по эксплуатации.
  • Обучение администраторов.
  • Гарантийная поддержка 3 месяца.

Сроки реализации

  • Базовая интеграция (HTTP, валидация, WebP, сохранение) — 2 дня.
  • Генерация нескольких размеров + дедупликация — +1-2 дня.
  • FTP-источник + параллельная очередь + дашборд прогресса — +1 день.

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