Учебный 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
Интерактивный пользовательский сценарий приложения.
-
Пользователь выбирает источник вакансий:
- HeadHunter;
- SuperJob;
- оба источника.
-
Вводит поисковый запрос.
-
Приложение получает вакансии через API.
-
Данные сохраняются в JSON.
-
Ответы разных API преобразуются в единую модель
Vacancy. -
Пользователь может последовательно применить фильтры.
-
Результаты сортируются по минимальной зарплате.
-
При необходимости формируется топ-N вакансий.
-
Результат можно вывести в консоль или сохранить в JSON.
- Python
- Object-Oriented Programming
- Abstract Base Classes
- REST API
- HeadHunter API
- SuperJob API
requests- JSON
- Poetry
В проекте практиковались:
- абстрактные классы и наследование;
- инкапсуляция;
- работа с объектной моделью;
- переопределение операторов сравнения;
- взаимодействие с внешними API;
- обработка данных разных форматов;
- сериализация и десериализация JSON;
- фильтрация и сортировка коллекций;
- организация кода по ответственности;
- работа с переменными окружения.
Проект создавался как практика объектно-ориентированного программирования на Python.
Основной акцент — не только получение данных из API, но и построение собственной модели предметной области, с которой можно работать независимо от конкретного источника вакансий.
Этот проект — одна из ранних точек моей backend/Python-линии.
Дальше в проектах появились:
Python → API → PostgreSQL → Django → Django REST Framework → Celery / Redis → Docker
Следующий шаг — переход от учебных консольных приложений к полноценным backend-системам.
Учебный проект, но именно на таких проектах постепенно появляется привычка сначала подумать о структуре данных и ответственности классов, а потом уже писать код.