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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Парсинг характеристик товаров для наполнения 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1169
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

Характеристики — основа фильтрации каталога. Без правильно заполненных свойств (b_iblock_element_property) умный фильтр Битрикса не работает, фасетный поиск даёт нулевой результат, и покупатель не может отобрать нужные товары. Парсинг характеристик технически сложнее парсинга описаний: нужно не просто вытащить текст, а распознать структуру «название параметра — значение» и правильно положить данные в свойства инфоблока.

Форматы характеристик на источниках

Таблица спецификаций бывает нескольких типов:

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 — фиксированный список значений (для фильтра важно)

Для фасетного фильтра Битрикса (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*(.*)$/.

Числовые значения свойств в Битриксе хранятся как строки в 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 рабочих дней — это одна из самых трудоёмких задач наполнения каталога.