Парсинг характеристик товарів для наповнення 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С-Бітрікс

Характеристики — основа фільтрації каталогу. Без правильно заповнених властивостей (b_iblock_element_property) розумний фільтр 1С-Бітрікс не працює, фасетний пошук дає нульовий результат, і покупець не може відібрати потрібні товари. Парсинг характеристик технічно складніший за парсинг описів: потрібно не просто витягти текст, а розпізнати структуру «назва параметра — значення» і правильно покласти дані у властивості інфоблоку.

Формати характеристик на джерелах

Таблиця специфікацій буває кількох типів:

HTML-таблиця (<table>) — класика, парситься через XPath //table//tr. Перша комірка рядка — назва, друга — значення.

Список dl/dt/dd — часто використовується в сучасних магазинах. Парсимо пари dt+dd.

JSON-LD або мікророзмітка schema.org — ідеальний варіант. Дані вже структуровані, не потрібно парсити HTML:

preg_match('/<script type="application\/ld\+json">(.*?)<\/script>/s', $html, $m);
$data = json_decode($m[1], true);

JS-змінні — дані у window.productData або __REDUX_STATE__. Витягуємо regex'ом.

Нормалізація назв характеристик

Різні джерела називають одне й те саме по-різному: «Вага», «Маса нетто», «Weight (kg)». Прямий маппінг у властивість інфоблоку без нормалізації створює хаос.

Рішення: таблиця аліасів property_aliases:

CREATE TABLE parser_property_aliases (
    alias VARCHAR(255),
    canonical_name VARCHAR(255),
    property_code VARCHAR(100)
);

При парсингу кожну знайдену назву шукаємо в таблиці аліасів. Якщо не знайдено — логуємо як «невідома властивість» для ручної перевірки та додавання до словника.

Маппінг на властивості інфоблоку

Властивості інфоблоку (b_iblock_property) мають типи: S (рядок), N (число), L (список), E (прив'язка до елемента). Для характеристик зазвичай використовують:

  • S — текстові значення («Колір: червоний»)
  • N — числові з одиницею виміру (PROPERTY_TYPE = N, USER_TYPE порожній)
  • L — фіксований список значень (важливо для фільтра)

Для фасетного фільтра 1С-Бітрікс (bitrix:catalog.smart.filter) значення типу L працюють швидше, ніж S — вони індексуються в b_iblock_element_prop_enum.

Створення значення типу L при імпорті:

// Отримуємо або створюємо enum-значення
$propEnum = CIBlockPropertyEnum::GetList([], [
    'PROPERTY_ID' => $propId,
    'VALUE' => $parsedValue
])->Fetch();
if (!$propEnum) {
    CIBlockPropertyEnum::Add(['PROPERTY_ID' => $propId, 'VALUE' => $parsedValue]);
}

Робота з одиницями виміру

Джерела дають «10 кг», «10kg», «10 кілограмів». Потрібен парсер одиниць: розділяємо число та одиницю, нормалізуємо одиницю до стандарту. Простий regex: /^([\d.,]+)\s*(.*)$/.

Числові значення властивостей у 1С-Бітрікс зберігаються як рядки в b_iblock_element_property.VALUE — одиниці виміру краще виносити в окрему властивість або додавати до CODE властивості (WEIGHT_KG).

Кейс: електроніка, 15 000 SKU, 120+ типів характеристик

Завдання: наповнити властивості для розумного фільтра по ноутбуках, телефонах, телевізорах — три інфоблоки з різними наборами властивостей.

Реалізація:

  • Парсинг із сайту виробника через JSON-LD (70% товарів) + HTML-таблиця (30%)
  • Словник аліасів з 380 записів, зібраний за перші 3 дні розробки
  • Всі числові характеристики — тип N, спискові (бренд, колір, країна) — тип L
  • Паралельний запуск 5 воркерів через PHP-CLI, кожен обробляє свою категорію

Результат: розумний фільтр запрацював коректно за 48 параметрами після 2 ітерацій налагодження словника аліасів.

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

Етап Термін
Аналіз структури характеристик джерела 4–8 годин
Розробка парсера характеристик 2–3 дні
Створення словника аліасів, нормалізація 1–2 дні
Налаштування властивостей інфоблоку під фільтр 1 день
Імпорт даних, налагодження типів властивостей 1–2 дні
Перевірка роботи розумного фільтра 4–8 годин

Разом: 7–12 робочих днів — це одне з найбільш трудомістких завдань наповнення каталогу.