Телеграм-бот для сбора данных с сайтов и расчета средних цен на товары (в текущей конфигурации настроен для Samsung Galaxy S23).
- Загрузка Excel-файлов с данными для парсинга сайтов
- Хранение информации о сайтах в базе данных SQLite
- Расчет средних цен с настроенных сайтов
- Удобный интерфейс с кастомными кнопками
- Python 3.8+
- Токен Telegram бота (получить у @BotFather)
- Клонируйте репозиторий
- Установите необходимые пакеты:
pip install -r requirements.txt- Создайте файл
.envв корне проекта и добавьте токен вашего Telegram бота:
TELEGRAM_BOT_TOKEN=ваш_токен
- Запустите бота:
python main.py-
В Telegram отправьте команду
/start -
Загрузите Excel-файл, используя кнопку "Загрузить файл". Excel-файл должен содержать следующие столбцы:
title: Название сайта/магазинаurl: URL страницы товараxpath: XPath для элемента с ценой
-
Используйте команду
/averageдля получения средних цен со всех настроенных сайтов
Бот использует базу данных SQLite (sites.db) со следующей схемой:
CREATE TABLE sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
url TEXT NOT NULL,
xpath TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)├── main.py # Основная логика бота
├── requirements.txt # Зависимости Python
├── .env # Переменные окружения
├── sites.db # База данных SQLite
└── uploads/ # Временное хранилище для загруженных файлов
- pyTelegramBotAPI
- pandas
- python-dotenv
- openpyxl
- SQLAlchemy
Бот включает обработку следующих ошибок:
- Некорректные загрузки файлов
- Отсутствующие столбцы в Excel
- Операции с базой данных
- Операции парсинга цен
Excel-файл должен содержать следующие обязательные столбцы:
title: Название магазина или сайтаurl: Полный URL страницы с товаромxpath: Путь XPath к элементу, содержащему цену
Пример содержимого файла:
| title | url | xpath |
|---|---|---|
| DNS | https://www.dns-shop.ru/product/... | //div[@class='price']/span |
| МВидео | https://www.mvideo.ru/products/... | //div[@class='price-block']/span |