2. Функциональные требования Сбор данных: Парсер должен извлекать информацию о товарах, включая следующие обязательные поля: Артикул (ключ товара): уникальный идентификатор товара. Единица измерения товара (например, шт., кг, л и т.д.). Цена товара. Наличие (количество на складе)(если доступно). Валюта цены (если доступно). Объемно-весовые характеристики товара В случае отсутствия артикулов или единиц измерения, парсер должен генерировать уведомление об ошибке. Формат данных: Собранные данные должны сохраняться в формате JSON. Структура JSON должна включать: product_code — артикул товара (ключ); name — название товара; price — цена; stock — количество на складе; unit — единица измерения; currency — валюта (если доступна). Логирование: Парсер должен вести логирование каждого запуска и ошибок. Уровень логирования должен быть настраиваемым, от базового (ошибки) до детального (все шаги парсинга). Логи должны сохраняться в файлы с метками времени. Формат логов: log_competitor_YYYY-MM-DD_HH-MM.log. Логи должны включать: Время начала и окончания выполнения. Количество успешно собранных товаров. Ошибки при сборе данных (например, недоступность сайта или изменения структуры страниц). Автоматизация: Парсер должен быть оптимизирован для периодического запуска через Cron. Логирование времени выполнения каждого запуска с фиксацией ошибок при запуске через Cron. Обработка ошибок: В случае отсутствия данных на странице или изменения структуры сайта, парсер должен зафиксировать ошибку и продолжить обработку следующих страниц. Парсер должен корректно обрабатывать такие ошибки, как: Недоступность сайта (отсутствие соединения). HTTP-ошибки (например, 404 или 500). Изменение структуры страницы. Производительность: Парсер должен быть оптимизирован для работы с большими объемами данных (десятки тысяч товаров). Должна быть реализована проверка и минимизация дублирования данных (например, при повторном запуске парсера). Валидность данных: Данные должны проверяться на корректность (например, цена не может быть отрицательной, наличие не может быть отрицательным числом и т.д.). 3. Технические требования Язык программирования: Python 3.x Форматы данных: Входные данные: веб-страницы HTML. Выходные данные: JSON (структурированный формат данных). Среда выполнения: Парсер должен быть совместим с Linux-системами для интеграции с Cron. Оптимизация: Парсер должен поддерживать многопоточную или асинхронную обработку данных для повышения производительности. Если это позволяет сайт конкурента 4. Дополнительная информация Каждый сайт -отдельное подзадание Парсер должен сохранять данные – запись CSV или записью в БД (postgres)