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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 30 з 45 послугУсі 1626 послуг
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • 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С-Бітрікс

XMLReader, а не SimpleXML — ось з чого починається робота з каталогом постачальника на 800 МБ. SimpleXML підтягне весь файл у пам'ять, PHP впаде з fatal error на ліміті 512 МБ. XMLReader читає потоково, node за node, споживаючи 20-30 МБ на будь-якому обсязі. З цієї деталі стартує будь-який наш проєкт з автонаповнення каталогу на Бітрікс.

Що реально робить парсинг

  • Первинне наповнення каталогу — 15 000 карток з описами, характеристиками, фото. Вручну це три місяці контент-менеджера; парсер — тиждень з налагодженням.
  • Моніторинг цін конкурентів — збір даних з Ozon, Wildberries, сайтів конкурентів. Конкурент знизив ціну на ходову позицію — дізнаєтесь через дві години, а не через два тижні.
  • Агрегація постачальників — п'ять прайсів у різних форматах (CSV з CP1251, XML у CommerceML, Excel з об'єднаними комірками) перетворюються на єдиний каталог зі спільною системою властивостей інфоблоку.
  • Збагачення карток — підтягуємо характеристики, інструкції, 3D-моделі з сайтів виробників. Без цього картка товару — порожнє місце для SEO.
  • Оновлення асортименту — товари, що зникли з фіду постачальника, деактивуються через CIBlockElement::Update($ID, ['ACTIVE' => 'N']). Нові — створюються. Каталог синхронізований.

Джерела та інструменти

Статичні сайти — PHP (Goutte, Symfony DomCrawler) або Python (Scrapy, lxml). Швидкість: 50-100 сторінок/сек. Вистачає для каталогів без JS-рендерингу.

SPA та динамічні сайти — Puppeteer або Playwright. Нескінченний скрол, AJAX-фільтри, lazy-load зображень — headless-браузер усе це обробить. Швидкість падає до 1-10 сторінок/сек, але альтернативи немає: дані існують лише після виконання JavaScript.

Файли постачальників:

  • Excel (XLS, XLSX) — PhpSpreadsheet. Обережно з об'єднаними комірками та формулами — вони ламають автоматичний маппінг.
  • CSV — fgetcsv() з правильним кодуванням. Постачальники люблять CP1251, BOM у UTF-8 і крапку з комою замість коми. Усе це потрібно детектити й обробляти.
  • XML/YML — XMLReader для великих файлів, SimpleXML для фідів до 50 МБ.
  • CommerceML — стандартний формат обміну з 1С. Розбираємо import.xml та offers.xml, маппимо на структуру інфоблоків.

API — REST-ендпоінти постачальників, API маркетплейсів (Ozon Seller API, Wildberries API). Працюємо в межах rate limits, обробляємо пагінацію.

Пайплайн автонаповнення

Чотири етапи. Кожен може зламатися по-своєму.

1. Збір. Парсер обходить джерела за cron-розкладом. Сирі дані пишемо у проміжну таблицю — не одразу в b_iblock_element. Логуємо все: скільки сторінок обійшли, скільки елементів розпарсили, де отримали 403 або timeout. Без логів налагодження парсера — ворожіння на кавовій гущі.

2. Нормалізація. Тут основна робота:

  • Очищення HTML-тегів, зайвих пробілів, Unicode-сміття
  • Одиниці виміру: «мм» → «мм», «millimeters» → «мм», «міліметр» → «мм»
  • Маппінг категорій постачальника → розділи інфоблоку Бітрікс. В одного постачальника «Ноутбуки», в іншого «Ноутбуки і планшети», у третього «Laptops» — усе в одну секцію
  • Дедуплікація за артикулом, EAN/GTIN. Один товар від трьох постачальників не повинен з'явитися тричі

3. Завантаження у Бітрікс. Через CIBlockElement::Add() для нових елементів, CIBlockElement::Update() для наявних. Зображення: завантажуємо, ресайзимо через CFile::ResizeImageGet(), конвертуємо у WebP. Властивості — через CIBlockElement::SetPropertyValuesEx(). SEO-мета через \Bitrix\Iblock\InheritedProperty\ElementValues. ЧПУ генеруємо з транслітерації назви.

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

Моніторинг цін конкурентів

Окрема підсистема зі своєю специфікою:

Параметр Як влаштовано
Частота Від разу на день до кожних 2 годин — залежить від волатильності ринку
Зіставлення За артикулом, EAN, нечітке порівняння назв через відстань Левенштейна
Зберігання Власна таблиця vendor_price_monitor з історією, не інфоблоки
Алерти Telegram/email при відхиленні ціни конкурента більш ніж на X%
Автоправила «Тримати ціну на 3% нижче мінімальної серед конкурентів, але не нижче собівартості + 15%»

Результат — дашборд: ваш товар vs конкуренти, історія цін, тренди. Менеджер бачить, де можна підняти ціну без втрати позиції, а де потрібно реагувати.

Модуль імпорту CSV/XML

Для файлів від постачальників — кастомний модуль з адмінкою:

  • Налаштовуваний маппінг: «колонка B у файлі → властивість BRAND інфоблоку»
  • Автодетект кодування (CP1251, UTF-8, UTF-16) через mb_detect_encoding() з перевіркою
  • Завантаження зображень за URL з чергою — щоб не забити канал
  • Інкрементальне оновлення за хешем рядка: змінився рядок — оновлюємо, ні — пропускаємо
  • Cron-розклад, звіт: створено 145, оновлено 892, помилок 3 (з деталями)

Великі файли: CSV обробляємо батчами по 1000 рядків через fgetcsv(), XML потоково через XMLReader, фонове виконання через чергу агентів Бітрікс — жодних PHP-таймаутів.

Правова сторона

  • robots.txt — поважаємо. Crawl-delay — дотримуємося
  • Частота запитів — 1-2 на секунду, не більше. Не потрібно DDoS-ити чужий сайт
  • Контент виробників — використовуємо. Унікальні авторські тексти — не копіюємо
  • Персональні дані — не збираємо

Наш процес

  1. Прототип — парсер для 1-2 джерел за 2-3 дні. Оцінюємо якість даних, підводні камені (захист Cloudflare, капча, динамічне підвантаження).
  2. Розробка — повний пайплайн: парсер → нормалізація → імпорт у Бітрікс → адмінка для керування.
  3. Тестування — проганяємо на повному обсязі каталогу, перевіряємо edge-кейси (порожні поля, кривий HTML, биті зображення).
  4. Запуск — налаштовуємо cron, моніторинг помилок через Telegram-бот.
  5. Підтримка — конкурент переробив верстку? Оновлюємо CSS-селектори у парсері.

Терміни

Задача Терміни
Парсер одного сайту (статичний HTML) 3-5 днів
Парсер SPA-сайту (Puppeteer/Playwright, обхід захисту) 1-2 тижні
Модуль імпорту CSV/XML у Бітрікс 1-2 тижні
Система моніторингу цін (5-10 конкурентів) 2-4 тижні
Комплексна система автонаповнення 4-8 тижнів
Підтримка та адаптація парсерів за підпискою