Skip to content

Asynchronous job scraper from Rabota.by, hh.ru, dev.by, Habr Career, Belmeta.com and Praca.by.

License

Notifications You must be signed in to change notification settings

lonesomestranger/jobshunter

Repository files navigation

JobHunter

MIT License Python 3.10+ aiogram 3 SQLAlchemy

JobHunter — это мощный асинхронный Telegram-бот для парсинга и агрегации вакансий с популярных сайтов по поиску работы. Он позволяет создавать гибкие подписки с фильтрами, получать мгновенные уведомления о новых вакансиях и экспортировать результаты для дальнейшего анализа в формате Markdown или CSV.
Актуальная ссылка на Codeberg.

🚀 Ключевые возможности

  • Поддержка нескольких платформ:
    • Rabota.by (+ hh.ru)
    • Habr Career (career.habr.com)
    • Dev.by (jobs.devby.io)
    • Belmeta.com
    • Praca.by
  • Гибкие подписки: Создавайте подписки на поиск по ключевым словам с детальной фильтрацией (опыт, зарплата, график, регион и т.д.).
  • Объединенный поиск: Возможность создать одну подписку, которая будет искать вакансии сразу на всех поддерживаемых сайтах.
  • Мгновенные уведомления: Бот автоматически проверяет сайты с помощью APScheduler и присылает уведомления о новых вакансиях прямо в Telegram.
  • Поиск через Google (not only) Dork: Встроенный инструмент для поиска вакансий на сайтах компаний, которые не публикуются на джоб-порталах.
  • Экспорт данных: Выгружайте все найденные по подписке вакансии в форматах .CSV или .MD (Markdown).
  • Простое управление: Удобный интерфейс с кнопками для управления подписками, построенный с использованием FSM в aiogram.
  • Асинхронная архитектура: Весь код, включая скрейперы (curl-cffi) и работу с базой данных (SQLAlchemy 2.0 async), полностью асинхронен.

🛠️ Установка и запуск

Предварительные требования

  • Python 3.10 или выше
  • Аккаунт в Telegram и токен для вашего бота (получить у @BotFather)

Пошаговая инструкция

  1. Клонируйте репозиторий:

    git clone https://github.com/lonesomestranger/JobHunter.git
    cd JobHunter
  2. Создайте и активируйте виртуальное окружение:

    # Для Windows
    python -m venv venv
    .\venv\Scripts\activate
    
    # Для macOS/Linux
    python3 -m venv venv
    source venv/bin/activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Настройте переменные окружения:

    • Скопируйте файл .env.example в новый файл с названием .env.
      # Для Windows
      copy .env.example .env
      
      # Для macOS/Linux
      cp .env.example .env
    • Откройте файл .env в текстовом редакторе и заполните его:
      TELEGRAM_BOT_TOKEN="ВАШ_ТЕЛЕГРАМ_ТОКЕН"
      ADMIN_CHAT_ID="ВАШ_ТЕЛЕГРАМ_ID"
      SCHEDULER_INTERVAL_MINUTES=30
      • TELEGRAM_BOT_TOKEN: Токен, который вы получили от @BotFather.
      • ADMIN_CHAT_ID: Ваш личный Telegram ID. Бот будет считать вас администратором, предоставляя доступ к командам управления пользователями. Узнать свой ID можно у бота @userinfobot.
      • SCHEDULER_INTERVAL_MINUTES: Интервал в минутах для запуска планировщика. По умолчанию 30 минут.
  5. Запустите бота:

    python main.py

После запуска бот готов к работе. Найдите его в Telegram и отправьте команду /start.

⚙️ Использование

Основные команды

  • /start - Запускает бота и показывает приветственное сообщение.
  • ☰ Меню - Открывает главное меню с основными функциями:
    • Создать подписку: Запускает пошаговый процесс создания новой подписки на поиск вакансий.
    • Мои подписки: Показывает список всех ваших активных подписок, позволяет их просматривать, редактировать, экспортировать и удалять.
    • Поиск Google Dork: Позволяет найти вакансии на корпоративных сайтах по ключевому слову.

Команды администратора

Эти команды доступны только пользователю, чей ID указан в ADMIN_CHAT_ID.

  • /add_user <telegram_id> - Предоставляет доступ к боту новому пользователю.
    • Пример: /add_user 123456789
  • /del_user <telegram_id> - Отзывает доступ у пользователя и удаляет все его данные.
    • Пример: /del_user 123456789

📂 Структура проекта

JobHunter/
├── bot/                      # Логика Telegram-бота (хендлеры, клавиатуры, FSM)
│   ├── handlers/
│   │   └── subscription_flows/ # Разделенная логика FSM для каждой платформы
├── database/                 # Модели SQLAlchemy и настройка подключения к БД
├── scrapers/                 # Модули-скрейперы для каждого сайта
├── .env.example              # Пример файла с переменными окружения
├── config.py                 # Загрузка конфигурации с помощью Pydantic
├── filters.json              # JSON-конфигурация фильтров для сайтов
├── main.py                   # Главный файл для запуска бота
├── requirements.txt          # Список зависимостей
└── scheduler.py              # Логика фоновых задач по проверке вакансий (APScheduler)

🤝 Участие в разработке

Если Вы хотите внести свой вклад в код, заказать доработку или просто обсудить проект и его развитие, Вы можете связаться со мной по актуальным контактам, которые можно найти в моем профиле.

📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.


Ключевые слова: rabota.by, hh.ru, career.habr.com, dev.by, belmeta.com, praca.by, jobs.devby.io, dev.by, агрегатор вакансий, парсер вакансий.

About

Asynchronous job scraper from Rabota.by, hh.ru, dev.by, Habr Career, Belmeta.com and Praca.by.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages