Цель проекта — разработка многопоточного парсера SimaLand, который будет собирать данные обо всех доступных категориях товаров, сохранять их в реляционную базу данных и отправлять уведомления в Telegram-чат.
Функциональные требования
Парсинг данных:
- Получение списка всех доступных категорий.
- Сбор информации о товарах из каждой категории (название, цена, описание, характеристики, наличие, изображения, остатки и т. д.).
- Обход пагинации.
- Обход ограничений SimaLand API (если необходимо).
Обработка и хранение данных:
- Очистка и нормализация данных перед сохранением.
- Сохранение данных в реляционную базу данных (PostgreSQL/MySQL).
- Обновление существующих данных при повторном парсинге.
Многопоточность и асинхронность:
- Использование asyncio + aiohttp (для Python) или Task Parallel Library (TPL) (для C#) для многопоточного выполнения.
- Ограничение количества одновременных запросов для предотвращения блокировки со стороны SimaLand.
Логирование и уведомления:
- Логирование всех этапов парсинга в файл.
- Ошибки и критические события отправляются в Telegram-чат.
- Уведомления об успешном завершении парсинга.
Нефункциональные требования
- Высокая производительность и отказоустойчивость.
- Возможность гибкой настройки параметров (таймауты, количество потоков, лимиты запросов).
- Масштабируемость (возможность парсинга новых категорий в будущем).
Какой стек предпочтительнее: Python или C#?