Розробка бота-парсера описів і характеристик товарів з нормалізацією

Каталог розходиться з постачальниками: описи та характеристики надходять у різному вигляді, а ручна звірка гальмує виведення товарів. Ми розробляємо парсер товарів з нормалізацією під ключ — приводимо дані до єдиного формату та скорочуємо ручну роботу над каталогом у рази.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка бота-парсера описів і характеристик товарів з нормалізацією
Середній
~3-5 днів
Часті запитання

Парсер товарів: чому каталог розходиться з постачальниками

Каталог розходиться з постачальниками не через те, що хтось погано працює, а через устрій процесу: картки товарів збирають вручну з прайсів, листів і таблиць, де в кожного постачальника своя логіка полів.

Один пише «вага 1,2 кг», другий — «1200 г», третій кладе масу в опис, а не в характеристику. Парсер товарів знімає цю ручну роботу: він забирає дані з джерела, приводить їх до єдиної схеми й віддає готові картки, а не сирий текст.

Ціна ручного заповнення видна не у трудовитратах, а в якості даних. Різнобій у характеристиках ламає фільтри: покупець ставить діапазон за вагою чи потужністю і не знаходить товар, який фізично підходить.

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

Помилки в каталозі накопичуються тихо. Поки асортимент невеликий, їх ловлять очима; на сотнях позицій і регулярних оновленнях прайсу ручна звірка не встигає за змінами, і розходження з постачальником стає постійним тлом.

Нормалізація характеристик закриває це на вході: одиниці приводяться до однієї системи, значення розбираються на число й міру, синоніми полів зводяться до спільного довідника, дублі схлопуються за артикулом і назвою.

Збір описів товарів при цьому не зводиться до копіювання тексту. Описи чистяться від службових позначок постачальника, приводяться до єдиної структури й перевіряються на повноту — щоб картка проходила вимоги майданчика без ручного доопрацювання.

Розбираємо, як це закривається: від розбору джерел і схеми нормалізації до регулярного оновлення каталогу й контролю розходжень.

Що дає нормалізація даних і як порівнюються підходи

Нормалізація даних — це приведення різнорідних описів до єдиного формату характеристик: у кожної картки з'являється передбачуваний набір полів, одиниці вимірювання та значення з довідника.

Без неї каталог із кількох джерел перетворюється на набір несумісних записів: «вага 1.2 кг», «1200 г» і «1,2кг» — три різних значення для пошуку та фільтрації.

Після нормалізації частка карток із повним набором ключових полів зростає з 40–60% до 95%+, а частка ручних правок під час оновлення каталогу падає в рази.

Що змінюється в якості каталогу

Єдиний формат характеристик дає три вимірюваних ефекти. Фільтри та порівняння товарів починають працювати за всіма позиціями, а не лише за тими, де менеджер вручну заповнив поля.

Повторні імпорти перестають створювати дублі: зіставлення відбувається за нормалізованим ключем, а не за рядком назви. Автоматизація карток прискорюється — нові позиції потрапляють у каталог із готовими атрибутами, а не в чергу на ручний розбір.

Як порівнюються підходи до збору

Підхід Коли підходить Обмеження
Готовий парсер за шаблоном Стабільна верстка джерела, одиничний сайт Ламається при зміні розмітки, не масштабується на десятки джерел
Власний парсер із правилами вилучення Багато джерел, потрібна нормалізація на льоту Потребує підтримки правил під кожне джерело
Ручне введення та вичитування Малий каталог, унікальні позиції Не масштабується, зростає час оновлення
Гібрид: парсинг + ручна перевірка спірних полів Критичні характеристики, де помилка дорога Потрібен процес розбору розбіжностей

Вибір визначається не обсягом каталогу, а тим, наскільки часто змінюються джерела та наскільки дорога помилка в характеристиці. Для джерел, що швидко змінюються, правила вилучення виносяться окремо від коду — тоді правка під нову розмітку займає хвилини, а не реліз.

Schema.org задає словник для опису товарів і характеристик, тому нормалізовані дані лягають у розмітку без перевинайдення структури полів.

Як ми впроваджуємо парсер: етапи інженерної роботи

Впровадження парсера товарів починається не з коду, а з інвентаризації джерел: які майданчики та каталоги постачальників віддають дані, у якому вигляді надходить опис — HTML-розмітка картки, вивантаження в XML або відповідь внутрішнього сервісу, — які поля обов'язкові для нормалізації (артикул, бренд, характеристики, одиниці вимірювання) і як часто змінюється структура сторінок.

На цьому етапі фіксуємо точки відмови: капчі, обмеження за частотою звернень, нестабільні селектори, дублі товарів між джерелами.

  1. Аудит джерел даних. Збираємо перелік майданчиків, розбираємо структуру карток і вивантажень, визначаємо, які поля витягуються напряму, а які потребують зіставлення. Результат — карта джерел із частотою оновлення та правилами доступу.
  2. Проєктування схеми збору. Обираємо спосіб отримання даних під кожне джерело: розбір розмітки, робота з вивантаженнями або звернення до внутрішнього інтерфейсу. Заздалегідь закладаємо ротацію адрес і паузи між запитами, щоб збір не блокувався на боці майданчика.
  3. Налаштування збору та нормалізації. Пишемо витяг полів і приводимо характеристики до єдиного довідника: бренди, одиниці вимірювання, категорії. Товари зіставляються між джерелами за артикулом і назвою, дублі згортаються.
  4. Перевірка якості. Проганяємо вибірку карток і звіряємо результат з еталоном: частка коректно розібраних полів, кількість пропусків, конфлікти при зіставленні. Налаштовуємо оповіщення про падіння частки успішних розборів — поломка розмітки видна одразу, а не через тиждень.
  5. Стабілізація та моніторинг. Додаємо повторні спроби при збоях, журналювання запитів і контроль швидкості збору. Регламент оновлення довідників фіксуємо, щоб нові категорії не ламали нормалізацію.
  6. Передача рішення. Розгортаємо парсер на вашій інфраструктурі або в нас, віддаємо доступи, конфігурації джерел і правила нормалізації.
  7. Документація та навчання. Передаємо опис схеми даних, інструкцію з додавання нового джерела та регламент реакції на збої — команда може розвивати рішення без нас.

Кожен етап закінчується перевірюваним результатом: карта джерел, схема збору, звіт про якість, працюючий конвеєр. Опишіть задачу — повернемося з оцінкою та планом за вашим набором майданчиків.

Чим відрізняється парсинг каталогу від разового вивантаження?

Разове вивантаження — це знімок каталогу на конкретний момент: скрипт проходить за списком сторінок, збирає картки й віддає файл. Парсинг каталогу влаштований інакше — це постійно працюючий контур, де між джерелом і вашою базою стоїть шар нормалізації, а не просто збирач. Різниця проявляється не в обсязі даних, а в тому, що відбувається з ними далі.

При разовому вивантаженні ви отримуєте статичний набір: ціни, наявність, характеристики зафіксовані на дату збору. Через тиждень частину позицій знято з виробництва, у частини змінилися параметри, з'явилися нові — і файл починає розходитися з реальністю.

Поки розходження терпиме, ним користуються; коли воно стає помітним, вивантаження запускають заново, і цикл повторюється.

Парсинг каталогу знімає цю проблему: регулярне оновлення йде за розкладом, зміни надходять інкрементально, а підтримка актуальності стає штатним режимом, а не окремою задачею.

Ключова відмінність — у нормалізації. При разовому зборі достатньо витягнути значення як є: далі їх дивиться людина.

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

Режими роботи парсера теж різняться. Разове вивантаження — один прогін за фіксованим списком. Парсинг каталогу працює в кількох режимах: повний обхід для первинного наповнення, інкрементальний — лише за зміненими позиціями, і точковий — за конкретними картками або розділами. Плюс відстеження зниклих позицій: їх не видаляють мовчки, а позначають, щоб історія залишилася.

Вибір режиму визначається задачею. Потрібен зріз для аналізу або разового порівняння — вистачить вивантаження. Потрібен живий каталог, який живить вітрину, пошук або систему рекомендацій, — без постійного контуру з нормалізацією він розвалиться за лічені тижні.

Кейс: як нормалізація прискорила виведення товарів на маркетплейси

Завдання було типовим для e-commerce: постачальник віддавав прайс у форматі, який потрапляв на маркетплейси лише вручну. Менеджер відкривав картку, переносив характеристики з таблиці постачальника у форму площадки, звіряв одиниці вимірювання та категорію.

На потоці в кілька тисяч позицій це давало чергу публікацій на тижні та стабільний відсоток помилок в атрибутах.

Що змінили

Зібрали парсер товарів, який забирає описи та характеристики з джерел постачальника і приводить їх до єдиної моделі: тип атрибута, одиниця вимірювання, допустимі значення, зв'язок з категорією площадки.

Нормалізація йшла не «на око», а за словником синонімів і правилами — «діагональ 15.6"» і «15,6 дюйма» перетворювалися в одне значення, а не в два різних атрибути.

Далі картка збиралася автоматично: опис за шаблоном категорії, характеристики розкладені за полями, обов'язкові атрибути площадки заповнені. Менеджер перевіряв готовий результат, а не набивав його з нуля.

Метрики до і після

Показник До Після
Ручна робота на картку 12-15 хвилин 2-3 хвилини на перевірку
Частка помилок в атрибутах близько 18% нижче 3%
Термін виведення нової позиції 5-7 днів протягом дня
Охоплення каталогу вибірково, за пріоритетом весь прайс постачальника

Окремо закрили повторні публікації: якщо постачальник змінював ціну або опис, оновлення потрапляло в картку без ручного перезбирання. Раніше такі правки просто губилися в черзі.

Schema.org використовували як орієнтир для структури атрибутів — це дало передбачувану розмітку та спростило звірку з вимогами площадок.

Що дав кейс парсингу в цифрах: скорочення ручної роботи в рази, частка помилок упала, а виведення товарів на маркетплейси перестало бути вузьким місцем. Команда переключилася з перенесення даних на роботу з асортиментом.

Сумніви щодо сумісності, доступів і відкату — обговоримо задачу

Парсер товарів майже ніколи не живе у вакуумі: описи та характеристики потрібно звести з обліковою системою, каталогом або прайсом, а отже — вирішити, як дані потрапляють усередину і що відбувається при розбіжності.

На практиці основні сумніви зводяться до трьох: чи не зламаємо ми поточний облік, які доступи знадобляться і чи можна відкотити зміни, якщо нормалізація піде не так, як очікували.

Що якщо облікова система закрита і не віддає дані напряму? Працюємо через вивантаження в узгодженому форматі або проміжний шар, який пише в систему штатними засобами.

Прямий запис у бойову базу не робимо — спочатку наповнюємо тестовий контур, звіряємо результат і тільки потім вмикаємо обмін.

Які доступи потрібні і наскільки це безпечно? Запитуємо мінімально необхідний набір: читання каталогу, запис в окрему область для нормалізованих карток, доступ до черги або журналу обміну. Секрети зберігаємо в захищеному сховищі, а не в коді, і передаємо їх вам при здачі.

Як відкочуються зміни? Кожна партія даних позначається ідентифікатором запуску, тому відкат — це видалення або деактивація конкретної партії, а не відновлення всієї бази. Перед першим бойовим запуском фіксуємо точку повернення і перевіряємо відкат на тестовому контурі.

Що робити, якщо частина карток нормалізується невірно?

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

Що замовник отримує на руки:

  • конфігурацію парсера і правила нормалізації характеристик;
  • схему обміну з обліковою системою та опис форматів;
  • налаштовані політики доступів і роботу з секретами;
  • процедуру відкату партії даних з перевіркою на тестовому контурі;
  • журналювання запусків і звіт про розбіжності;
  • інструкцію з експлуатації та передачу рішення вашій команді.

Опишіть задачу — яка облікова система, звідки беруться дані і що вже пробували. Повернемося з оцінкою та планом робіт.

Терміни впровадження парсера за етапами

Терміни залежать не від обсягу каталогу, а від того, наскільки передбачувані джерела. Стабільний API або фід віддає дані одразу — етап збору займає дні. Розмітка, яка змінюється від сторінки до сторінки, потребує окремого шару правил і розтягує підготовку.

Нижче — орієнтовні терміни для типового проєкту: три-п'ять джерел, нормалізація в єдину схему, регулярне оновлення.

Етапи йдуть із частковим перекриттям: схему даних уточнюють, поки триває збір, а нормалізація стартує на перших зібраних картках. Тому загальний термін не дорівнює сумі рядків таблиці — для типового проєкту це три-шість тижнів від старту до працюючого оновлюваного контуру.

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

Опишіть ваші джерела й поля, які потрібні в картці, — повернемося з оцінкою та планом за етапами.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060