Описание задачи
Необходимо разработать автономный модуль парсинга, который будет автоматически собирать данные с указанного сайта, отслеживать изменения и отправлять их в очередь RabbitMQ для дальнейшей обработки модулем агрегации. Модуль должен следовать общему паттерну проектирования, принятому в проекте. Примеры реализации смежных модулей будут предоставлены (локальный GitLab).
Обязательный стек технологий
- Python
- Django REST Framework
- Celery
- PostgreSQL
- RabbitMQ
- Docker
- Docker Compose
Функциональные требования
Универсальность
- Модуль должен быть готов к сбору любой категории данных без написания нового кода. Достаточно установить флаг в базе данных для конкретной категории — и объявления из неё начнут собираться автоматически.
- Если ведется сбор сразу всех категорий, необходимо предусмотреть маппинг полученных данных к единому типу категорий, который ожидает система-агрегатор.
Защита от ботов
- Модуль должен автоматически обходить стандартную защиту сайта от парсинга и ботов на уровне скриптов и заголовков.
- Не требуется использование сложных капч и человекоподобных решений — достаточно встроенных эмуляций.
Интеграция и передача данных
- Все собранные сведения после верификации отправляются в RabbitMQ.
- Формат сообщения должен соответствовать требованиям агрегатора (уточняется в ТЗ).
Архитектурные особенности
- Модуль полностью автономен и запускается через Docker Compose.
- Легко адаптируется под другие сайты и категории путем изменения настроек в БД или конфигурациях.