Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💼 Vacancy Parser

Object-oriented application for collecting and processing job vacancies

Учебный Python-проект по объектно-ориентированному программированию.

Приложение получает вакансии с HeadHunter и SuperJob, приводит данные из разных API к единой модели и предоставляет инструменты для фильтрации, сортировки и сохранения результатов.


🚀 Возможности

  • поиск вакансий через HeadHunter и SuperJob;
  • выбор одной или обеих платформ;
  • постраничное получение результатов;
  • преобразование данных разных API в единую модель Vacancy;
  • сохранение исходных данных в JSON;
  • фильтрация по ключевому слову;
  • фильтрация по уровню зарплаты;
  • фильтрация по региону;
  • фильтрация по опыту работы;
  • сортировка вакансий по минимальной зарплате;
  • формирование топ-N вакансий;
  • удаление вакансий из текущего результата;
  • сохранение итоговой выборки в JSON.

🏗️ Архитектура

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

HeadHunter API ──┐
                 ├──> Vacancy ──> filtering ──> sorting ──> results
SuperJob API ────┘
                      │
                      ▼
                  JSON storage

Для работы с API реализован общий абстрактный класс Engine, от которого наследуются клиенты HeadHunter и SuperJob.

Это позволяет работать с разными источниками вакансий через схожий интерфейс.


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

coursework_4/
├── src/
│   ├── hh_sj_classes.py
│   ├── json_class.py
│   └── vacancy_class.py
│
├── ut/
│   ├── main.py
│   └── utils.py
│
├── .gitignore
├── pyproject.toml
└── README.md

Основные компоненты

hh_sj_classes.py

Работа с API HeadHunter и SuperJob.

  • абстрактный класс Engine;
  • HeadHunterAPI;
  • SuperJobAPI;
  • получение вакансий постранично.

vacancy_class.py

Единая модель вакансии.

Хранит название, зарплату, регион, требования, описание, опыт работы и ссылку на вакансию.

Также реализованы операторы сравнения вакансий по минимальной зарплате.

json_class.py

Работа с JSON:

  • сохранение данных API;
  • чтение вакансий;
  • преобразование данных разных API в объекты Vacancy;
  • фильтрация по зарплате;
  • работа с результатами поиска.

ut/main.py

Интерактивный пользовательский сценарий приложения.


🔄 Как работает приложение

  1. Пользователь выбирает источник вакансий:

    • HeadHunter;
    • SuperJob;
    • оба источника.
  2. Вводит поисковый запрос.

  3. Приложение получает вакансии через API.

  4. Данные сохраняются в JSON.

  5. Ответы разных API преобразуются в единую модель Vacancy.

  6. Пользователь может последовательно применить фильтры.

  7. Результаты сортируются по минимальной зарплате.

  8. При необходимости формируется топ-N вакансий.

  9. Результат можно вывести в консоль или сохранить в JSON.


🛠️ Технологии

  • Python
  • Object-Oriented Programming
  • Abstract Base Classes
  • REST API
  • HeadHunter API
  • SuperJob API
  • requests
  • JSON
  • Poetry

🧠 Что было отработано

В проекте практиковались:

  • абстрактные классы и наследование;
  • инкапсуляция;
  • работа с объектной моделью;
  • переопределение операторов сравнения;
  • взаимодействие с внешними API;
  • обработка данных разных форматов;
  • сериализация и десериализация JSON;
  • фильтрация и сортировка коллекций;
  • организация кода по ответственности;
  • работа с переменными окружения.

🎯 Цель проекта

Проект создавался как практика объектно-ориентированного программирования на Python.

Основной акцент — не только получение данных из API, но и построение собственной модели предметной области, с которой можно работать независимо от конкретного источника вакансий.


🌱 Development Path

Этот проект — одна из ранних точек моей backend/Python-линии.

Дальше в проектах появились:

Python → API → PostgreSQL → Django → Django REST Framework → Celery / Redis → Docker

Следующий шаг — переход от учебных консольных приложений к полноценным backend-системам.


🦊

Учебный проект, но именно на таких проектах постепенно появляется привычка сначала подумать о структуре данных и ответственности классов, а потом уже писать код.

About

Python OOP application for collecting and processing job vacancies from HeadHunter and SuperJob.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages