Реалізація автонаповнення сайту даними з парсера

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

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

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація автонаповнення сайту даними з парсера
Середня
~5 робочих днів
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація автоматичного заповнення сайту з парсера

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

Архітектура системи

Парсер → Сирі дані → Процесор → Нормалізовані дані → Черга імпорту
                                                            ↓
                                                       CMS / БД сайту
                                                            ↓
                                               Статус: чернетка / опубліковано

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

Маппінг полів

Кожне джерело має свою структуру. Конфігурація маппінгу:

{
  "source": "supplier_catalog",
  "mappings": {
    "title": "$.name",
    "description": "$.full_description",
    "price": "$.price_rub",
    "category": { "field": "$.category_id", "transform": "category_map" },
    "images": "$.photos[*].url",
    "sku": "$.article"
  },
  "category_map": {
    "1": "electronics",
    "2": "clothing",
    "15": "home-garden"
  }
}

JSONPath маппінг дозволяє адаптувати нове джерело без змін коду — тільки конфігурація.

Обробка зображень

Зображення з джерела завантажуються, оптимізуються та завантажуються у власне сховище:

async def process_image(url: str, product_id: int) -> str:
    async with httpx.AsyncClient() as client:
        resp = await client.get(url, timeout=30)

    img = Image.open(BytesIO(resp.content))
    img = img.convert('RGB')

    # зміна розміру збереження пропорції
    img.thumbnail((1200, 1200), Image.LANCZOS)

    # збереження як WebP
    output = BytesIO()
    img.save(output, 'WEBP', quality=85)

    # завантаження в S3/MinIO
    s3_key = f'products/{product_id}/{uuid4()}.webp'
    s3.put_object(Bucket=BUCKET, Key=s3_key, Body=output.getvalue())

    return f'https://cdn.example.com/{s3_key}'

Контроль якості

Перед публікацією дані проходять валідацію:

  • Обов'язкові поля заповнені (назва, ціна, щонайменше одна фотографія)
  • Ціна в допустимому діапазоні (захист від помилок джерела: 0 або 999 999 999)
  • Опис не коротший за N символів
  • Зображення доступні та мають адекватний розмір

Записи, які не пройшли валідацію, позначаються як review_required і потребують ручної перевірки.

Стратегії публікації

  • Автоматична публікація — вміст з надійних джерел публікується відразу
  • Чернетка — вміст створюється, редактор публікує
  • Diff-оновлення — коли дані джерела змінюються, оновлюються лише змінені поля, не весь матеріал

Часовий графік

Система автоматичного заповнення для CMS з одним джерелом і базовою валідацією: 5–8 днів. З кількома джерелами, UI для управління маппінгами та системою модерації: 15–20 днів.