ANCHOR: Project_README
Семантика: Документация, описывающая проект, его структуру и способ использования.
Сервис мониторинга цен ElixirPeptide (v3.0)
Это распределенное Python-приложение для мониторинга каталога товаров с сайта elixirpeptide.ru. Сервис автоматически отслеживает изменения в ценах и наличии товаров, и отправляет отчеты в Telegram.
🚀 Архитектура (v3.0)
Проект перешел от простого парсера к полноценному сервису мониторинга с асинхронной обработкой данных.
- Точка входа:
monitoring_service.py— главный скрипт, запускаемый по расписанию (cron). - Оркестратор:
src/orchestrator.pyуправляет процессом парсинга. - Анализатор:
src/analyzer.pyсравнивает данные последнего и предпоследнего запусков, выявляя изменения. - Уведомления:
src/utils/telegram_sender.pyотправляет HTML-отчеты об изменениях в Telegram. - Очередь сообщений: Интеграция с RabbitMQ для асинхронного экспорта данных о товарах и логах.
- База данных: SQLite используется для хранения истории парсинга и данных для анализа.
✨ Ключевые возможности
- Автоматический мониторинг: Запуск по расписанию для непрерывного отслеживания.
- Отчеты об изменениях: Уведомления в Telegram о новых, удаленных товарах, а также изменениях цен и наличия.
- Асинхронный экспорт: Отправка данных в RabbitMQ для дальнейшей обработки другими системами.
- Надежность: Механизм retry-запросов, детальное логирование и отказоустойчивость.
- Гибкая конфигурация: Все параметры настраиваются через
.envфайл.
Структура Проекта
monitoring_service.py: [NEW] Главная точка входа для запуска по расписанию.src/: Основная директория с исходным кодом.orchestrator.py: [NEW] Управляет всем процессом парсинга.analyzer.py: [NEW] Анализирует данные и формирует отчеты.main.py: Точка входа для ручного запуска парсинга.core/: Ядро приложения.settings.py: [ENHANCED] Pydantic-модели для конфигурации (включая Telegram, RabbitMQ).database.py: Логика работы с базой данных SQLite.rabbitmq.py: [NEW] Клиент для работы с RabbitMQ.
scraper/: Логика парсинга.engine.py: Улучшенный движок парсера.
utils/: Вспомогательные утилиты.telegram_sender.py: [NEW] Отправка уведомлений в Telegram.
requirements.txt: [UPDATED] Обновленный список зависимостей..env.example: Пример файла с переменными окружения.RABBITMQ_SETUP.md: [NEW] Руководство по настройке RabbitMQ.
Установка и Запуск
1. Клонирование и настройка окружения
git clone https://gitea.bebesh.ru/busya/peptide-parcer.git
cd peptide-parcer
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
# Установка зависимостей
pip install -r requirements.txt
2. Настройка RabbitMQ (Опционально)
Для асинхронного экспорта данных требуется RabbitMQ. Рекомендуется запуск через Docker:
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Подробности см. в RABBITMQ_SETUP.md.
3. Настройка конфигурации
Скопируйте .env.example в .env и заполните необходимые параметры.
cp .env.example .env
nano .env # Отредактируйте файл
Ключевые переменные окружения:
TELEGRAM_BOT_TOKEN: Токен вашего Telegram-бота.TELEGRAM_CHAT_ID: ID чата, куда будут приходить отчеты.ENABLE_RABBITMQ_EXPORT:trueилиfalseдля включения/отключения экспорта в RabbitMQ.RABBITMQ_HOST,RABBITMQ_PORTи т.д.: Настройки подключения к RabbitMQ.
4. Запуск
Автоматический мониторинг (рекомендуется)
Настройте запуск monitoring_service.py через cron или планировщик задач.
# Пример для cron, запуск каждый час
# 0 * * * * /path/to/your/project/venv/bin/python /path/to/your/project/monitoring_service.py >> /path/to/your/project/logs/cron.log 2>&1
# Ручной запуск для проверки
python monitoring_service.py
Ручной запуск парсинга (без анализа и отчета)
python src/main.py
Результаты
Отчеты в Telegram
Сервис присылает в указанный чат отчет, если обнаруживает изменения:
- 💰 Изменились цены: список товаров с новой и старой ценой.
- 📦 Изменилось наличие: список товаров, которые появились или закончились.
- ✨ Новые товары: список добавленных товаров.
- 🗑️ Удаленные товары: список удаленных товаров.
Данные
- База данных:
price_data_final/parser_data.db— хранит всю историю парсинга. - CSV файл:
price_data_final/prices_full_catalog_*.csv— создается при ручном запуске. - RabbitMQ: Сообщения с данными о товарах и логах отправляются в очереди
price_parser.productsиprice_parser.logs.
Устранение неполадок
- Не приходят сообщения в Telegram:
- Проверьте правильность
TELEGRAM_BOT_TOKENиTELEGRAM_CHAT_ID. - Убедитесь, что бот добавлен в чат с нужными правами.
- Проверьте правильность
- Ошибка подключения к RabbitMQ:
- Проверьте, что RabbitMQ запущен и доступен.
- Убедитесь в корректности настроек в
.env.
- Ошибки парсинга:
- Проверьте доступность сайта
elixirpeptide.ru. - Возможно, изменилась структура HTML-страниц. В этом случае нужно обновить CSS-селекторы в
src/core/settings.py.
- Проверьте доступность сайта
Description
Languages
Python
100%