Данный бот был написан для парсинга цен с сайтов по ULR и X-Path
Техническое задание
Представьте, что у вас есть система без интерфейса пользователя, например краулер (сборщик информации), который парсит все сайты по продаже зюзюбликов и сохраняет в базу данных.
Появилась потребность дать обычному пользователю минимальными усилиями добавлять еще сайты для парсинга
Напишите простого бота, который будет иметь одну кнопку: загрузить файл
1. При нажатии кнопки пользователь прикрепляет файл excel в формате таблицы с полями:
a. title - название
b. url - ссылка на сайт источник
c. xpath - путь к элементу с ценой
2. Бот получает файл, сохраняет
3. Открывает файл библиотекой pandas
4. Выводит содержимое в ответ пользователю
5. Сохраняет содержимое в локальную БД sqlite
Реализация на python, решение должно быть представлено ссылкой на репозиторий и на бота (как основной вариант телеграм, но возможно вы предложите что-то еще).
Учесть возможность того, что сумма будет с пробелами, обозначением валюты и прочее.
Внутри репозитория должна быть инструкция по развёртыванию и корректный файл с необходимыми зависимостями (requirements, pipenv, poetry на ваш выбор)
Задание рассчитано на один день, выполнять можно в удобное время в течение недели
*Задача со звездочкой:
Провести парсинг по данным из таблицы и вывести среднюю цену зюзюблика по каждому сайту,
В качестве зюзюблика можете взять любой интересный вам товар
Список доступных команд
-
Пользователь:
/start
— начальная команда любого бота в Telegram, выводит приветственное сообщениеЗагрузить
— кнопка для загрузки файла Excel
/help
— команда, которая выводит список доступных команд
-
Администратор:
/logs
— отправляет в ответ текстовый документ с логами бота/reset
— пересоздать базу данных
python
,exit()
(проверялось на версии 3.11)cp .env.example .env
- Вставить данные в созданный выше файл секретных данных .env
- Вставить данные конфигурации в файл bot/config.py
pip install -r requirements.txt
python -m bot.main
pip install poetry
— сначала надо установить Poetry через pip или аналогичный установщик, например, pipxpoetry install
poetry run start
Дополнительные команды консоли
poetry export -f requirements.txt --output requirements.txt --without-hashes
— сгенерировать новый список зависимостей для pip через poetrypoetry run python -m bot.main
— аналогично команде-скриптуpoetry run start
poetry add $(cat requirements.txt)
— сгенерировать новый список зависимостей для poetry через pip
Пример файла .env
# Токен бота
BOT_TOKEN=<token>
# Режим отправки сообщений в канал-чат
# При включенном режиме бот будет "дублировать" важные сообщения (запуск, критическая ошибка) в канал-чат
LOG_MODE=False
# Идентификатор канала-чата, используйте 0, если он вам не нужен
LOG_GROUP_ID=<group_id>
# Путь к файлу логов
LOG_FILE_PATH=bot/static/logs.txt
# Путь к базе данных SQLite
DB_PATH=bot/static/sqlite.db
# Включение тестового режима
# При включенном тестовом режиме бот будет отвечать заглушкой всем, кроме администраторов, указанных в файле config.py
TESTING_MODE=False