Files
peptide-parcer/README.md
2025-07-21 10:37:12 +03:00

127 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. Клонирование и настройка окружения
```bash
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:
```bash
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
```
Подробности см. в `RABBITMQ_SETUP.md`.
### 3. Настройка конфигурации
Скопируйте `.env.example` в `.env` и заполните необходимые параметры.
```bash
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` или планировщик задач.
```bash
# Пример для 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
```
#### Ручной запуск парсинга (без анализа и отчета)
```bash
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`.
## Устранение неполадок
1. **Не приходят сообщения в Telegram**:
- Проверьте правильность `TELEGRAM_BOT_TOKEN` и `TELEGRAM_CHAT_ID`.
- Убедитесь, что бот добавлен в чат с нужными правами.
2. **Ошибка подключения к RabbitMQ**:
- Проверьте, что RabbitMQ запущен и доступен.
- Убедитесь в корректности настроек в `.env`.
3. **Ошибки парсинга**:
- Проверьте доступность сайта `elixirpeptide.ru`.
- Возможно, изменилась структура HTML-страниц. В этом случае нужно обновить CSS-селекторы в `src/core/settings.py`.