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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Парсинг зображень товарів для наповнення 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

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

Як 1С-Бітрікс зберігає зображення товарів

Зображення зберігаються в таблиці 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_) для подальшої ідентифікації

Часові рамки робіт

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

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