Парсинг описів товарів для наповнення 1С-Бітрікс
Порожні або скопійовані описи — це нульова SEO-цінність і погана конверсія. Але писати тексти вручну для 5000 товарів нереально. Парсинг описів із сайтів виробників або дистриб'юторів — робочий спосіб швидко наповнити каталог, якщо грамотно організувати процес і не допустити дублювання контенту.
Джерела описів
Вибір джерела визначає якість та правові ризики:
Сайт виробника — максимально релевантний контент, але часто захищений від парсингу і може містити copyright. Використовувати як основу для рерайту, не як фінальний текст.
Агрегатори (Яндекс.Маркет, OZON, Wildberries) — великий обсяг описів, стандартизований формат. Ті самі правові застереження.
Офіційні дистриб'ютори — більш лояльні до використання контенту, часто самі зацікавлені в його поширенні.
Бази даних виробників (Icecat, Synccentric) — легальний варіант з API, платний, але дає чисті дані з ліцензією.
Витяг та очищення тексту
Опис на сайті-джерелі зазвичай знаходиться в <div class="description"> або аналогічному контейнері. Витягуємо через DomCrawler:
$description = $crawler->filter('.product-description')->text();
Після витягу — обов'язкове очищення:
-
strip_tags()для видалення HTML (або фільтрація дозволених тегів) - Видалення рекламних вставок типу «Купити в нашому магазині»
- Нормалізація пробілів та переносів рядків
- Видалення згадок бренду-конкурента
Якщо потрібно зберегти HTML-форматування (жирний, списки), використовуємо Symfony\Component\DomCrawler\Crawler::html() і фільтруємо через HTMLPurifier.
Запис у поля 1С-Бітрікс
1С-Бітрікс розділяє опис на два поля:
-
PREVIEW_TEXT— короткий опис (для лістингу) -
DETAIL_TEXT— повний опис (для картки товару)
При парсингу довгого опису: перший абзац → PREVIEW_TEXT, повний текст → DETAIL_TEXT. Тип тексту задається полями PREVIEW_TEXT_TYPE та DETAIL_TEXT_TYPE (значення: text або html).
Оновлення елемента:
$el = new CIBlockElement();
$el->Update($elementId, [
'PREVIEW_TEXT' => $shortDesc,
'PREVIEW_TEXT_TYPE' => 'html',
'DETAIL_TEXT' => $fullDesc,
'DETAIL_TEXT_TYPE' => 'html',
]);
Робота з уже заповненими картками
Не перезаписувати наосліп — менеджери можуть вручну покращувати описи. Додаємо логіку:
- Якщо
DETAIL_TEXTпорожній — записуємо парсинговий текст - Якщо заповнений — встановлюємо властивість
DESCRIPTION_SOURCE = parsedлише при первісному заповненні - При оновленні парсера — пропускаємо елементи без прапорця
DESCRIPTION_SOURCE(тобто текст правили вручну)
Часові рамки робіт
| Етап | Термін |
|---|---|
| Аналіз джерел, вибір структури витягу | 2–4 години |
| Розробка парсера описів | 1–2 дні |
| Логіка очищення та нормалізації тексту | 4–8 годин |
| Інтеграція з інфоблоком, захист ручних правок | 4–6 годин |
| Тестування на 100–200 позиціях | 4 години |
Разом: 4–6 робочих днів. Якщо потрібен рерайт через AI після парсингу — додайте ще 1–2 дні на інтеграцію з GPT API.







