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

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, 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: данные, собранные из внешних источников, автоматически попадают на сайт в виде товаров, статей, объявлений или профилей. Задача не только в импорте, но и в нормализации, обработке конфликтов и управлении контентом.

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

Парсер → Сырые данные → Processor → Нормализованные данные → Import Queue
                                                                    ↓
                                                               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 и требуют ручной проверки.

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

  • Авто-публикация — контент от доверенных источников публикуется сразу
  • Черновик — контент создаётся, публикует редактор
  • Дифф-обновление — при изменении данных в источнике обновляется только изменившееся поле, не весь материал

Сроки

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