Парсинг изображений товаров для наполнения 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Парсинг изображений товаров для наполнения 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1227
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    839
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    580
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    980

Парсинг изображений товаров для наполнения 1С-Битрикс

Каталог без изображений не продаёт. Загрузка фото вручную для 3000+ SKU занимает недели. Парсинг изображений с сайтов производителей или поставщиков закрывает задачу за 1–3 дня — если правильно обработать скачивание, проверку качества и привязку к элементам инфоблока.

Как Битрикс хранит изображения товаров

Изображения хранятся в таблице b_file, физически — в /upload/iblock/. Элемент инфоблока связывается с изображением через поля:

  • PREVIEW_PICTURE — превью для листинга (ID записи в b_file)
  • DETAIL_PICTURE — основное фото для карточки
  • Свойство типа F (файл) или G (галерея) — для дополнительных изображений

Для галереи используется свойство типа F с флагом MULTIPLE = Y. Стандартный компонент bitrix:catalog.element берёт изображения из этого свойства.

Скачивание и сохранение изображений

Шаг 1: скачать файл

$imageData = file_get_contents($imageUrl);
// или через Guzzle с таймаутом и retry

Шаг 2: сохранить через CFile::MakeFileArray()

$tmpFile = tempnam(sys_get_temp_dir(), 'img_');
file_put_contents($tmpFile, $imageData);
$fileArray = CFile::MakeFileArray($tmpFile);
$fileArray['name'] = $filename;
$fileId = CFile::SaveFile($fileArray, 'iblock');

Шаг 3: привязать к элементу

CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'MORE_PHOTO' => ['n0' => ['VALUE' => $fileId]]
]);

Для нескольких изображений используем индексы n0, n1, n2 и т.д.

Проблемы при скачивании изображений

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

Защита от хотлинкинга — сайты-источники могут проверять Referer. Передаём корректный заголовок:

$client->get($url, ['headers' => ['Referer' => 'https://source-site.com']]);

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

$imageInfo = getimagesizefromstring($imageData);
if ($imageInfo[0] < 300 || $imageInfo[1] < 300) continue; // пропускаем мелкие

Дубликаты — один и тот же URL на разных страницах. Кешируем уже скачанные URL → file_id в памяти или таблице.

Извлечение URL изображений с источника

Для одного главного фото:

$src = $crawler->filter('.product-image img')->attr('src');

Для галереи — часто изображения в data-атрибутах:

$crawler->filter('[data-image]')->each(function($node) use (&$urls) {
    $urls[] = $node->attr('data-image');
});

Иногда массив изображений сидит в JS: productImages: ["url1", "url2"] — парсим regex'ом или через JSON-LD.

Обработка уже существующих изображений

Не затираем фото, загруженные вручную или из 1С. Логика:

  1. Проверяем PREVIEW_PICTURE — если 0 или пустой, добавляем
  2. Для галереи — добавляем только если свойство MORE_PHOTO пустое
  3. Помечаем парсинговые фото меткой в имени файла (parsed_ prefix) для последующей идентификации

Таймлайн работ

Этап Срок
Анализ структуры изображений на источнике 2–4 часа
Скачивание, валидация, сохранение через CFile 1–2 дня
Привязка к элементам инфоблока (превью + галерея) 4–8 часов
Обработка ошибок, retry, логирование 4 часа
Тестовый прогон на 500 позициях 4 часа

Итого: 3–5 рабочих дней. При большом каталоге (10 000+ изображений) добавьте 1–2 дня на оптимизацию скорости скачивания (параллельные воркеры).