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.

Устранение неполадок

  1. Не приходят сообщения в Telegram:
    • Проверьте правильность TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID.
    • Убедитесь, что бот добавлен в чат с нужными правами.
  2. Ошибка подключения к RabbitMQ:
    • Проверьте, что RabbitMQ запущен и доступен.
    • Убедитесь в корректности настроек в .env.
  3. Ошибки парсинга:
    • Проверьте доступность сайта elixirpeptide.ru.
    • Возможно, изменилась структура HTML-страниц. В этом случае нужно обновить CSS-селекторы в src/core/settings.py.
Description
No description provided
Readme 210 KiB
Languages
Python 100%