Парсер вакансий Краткий обзор: Техническое задание выполнено в учебно - подготовительных к работе целях. Парсер вакансий считывает посредством API, вакансии с сайтов HH.ru и SuperJob. Считанные данные записываются в фаил, далее по определенным запросам пользователя, считываются из файла и формируются для вывода.
Структура программы:
- Подключение библиотек из окружения и папки Lib(в которой хранятся фаилы с классами)
- Создается экземпляр класса User(работа с пользователем) и экземпляр класса FileDateVerification(проверяет существует ли фаил, если существует больше 24 часов ставит флаг на обновление)
- Проверка на существование пользователя(если программой уже пользовались создается фаил user.txt): - пользователь существует: вывод на экран приветствия с информацией о последнем поиске вакансий; предложение продолжить просмотр вакансий, из предыдущего запроса или начать новый поиск вакансий, либо начать поиск всех вакансий. Если введена новая вакансия(которая отличается от предыдущего запроса), ставит флаг на обновление вакансий и записывает название вакансии в фаил user.txt. - новый пользователь: спрашивает имя пользователя и название вакансии для поиска, записывает в фаил user.txt.
- Запускается бесконечный цикл, выход из цикла комманда exit.
- Создает экземпляр класса работы: с фаилом вакансий и с методами поиска
- Проверка на введенные данные. Если введена новая вакансия ставит флаг на обновление вакансий и записывает название вакансии в фаил user.txt
- Если флаг стоит на обновлении или прошло 24 часа с момента создания файла, либо если файла не существует: происходит считывание вакансий по заданному названию вакансии; запись в фаил вакансий.
- Предложение ввести количество выводимых на экран вакансий, если пользователь ни чего не ввел, по умолчанию 10.
- Предложение ввести команду: последние вакансии, топ самых высоких зарплат, без опыта работы.
- Считывание вакансий в список.
- В зависимости от выбора команды запускает метод, который формирует односвязный список экземпляров вакансий.
- Вывод односвязного списка экземпляров вакансий на экран.
- Предложение посмотреть другую вакансию либо завершить программу.
Папка Lib и файлы: Фаил Errors: классы ошибок(вывод на экран) проработанных в файле Verification
Фаил Verification:
- class RequestVerification: Проверка адреса на существование или работоспособность, так же адресс может быть не передан вообще. В случае ошибки вызов соответствующего класса из файла Errors.
- class APIKeyVerification: Проверка наличия ключа (имени) в переменных окружения Windows. В случае ошибки вызов соответствующего класса из файла Errors.
- class ListVerification: Проверка списка на пустой список. В случае ошибки вызов соответствующего класса из файла Errors.
- class JsonVerification: Проверяет соответствует ли словарь, json формату. В случае ошибки вызов соответствующего класса из файла Errors.
- class FileDateVerification: Проверяет фаил на существование, если существует проверяет время существования, не более 24 часов. Возвращает флаг(True/False) команду на обновление.
- KeyInDictVerification: Проверяет ключи словаря на существование, возвращает словарь с соответствующими ключами с bool значением.
Фаил User:
- class User: запись информации о пользователе в фаил, чтение фаила, и методы получения имени и вакансии.
Фаил GetVacancy:
- class HH: Считывает вакансии с HH.ru в список, в соответствии с запросом вакансии.
- class SuperJob: Считывает вакансии с SuperJob.ru в список, в соответствии с запросом вакансии.
- class Engine: Абстрактный класс, с методом склеивания двух списков вакансий(HH.ru и SuperJob.ru)
- class JobAssembly: собирает все методы из классов SuperJob и Engine в один класс.
Фаил JobProcessing:
- class JobProcessing: обладает методами: запись в фаил склеенного и обработанного списка вакансий; чтение фаила в список; удаление ненужных символов в строке; поиск последних(свежих) вакансий; поиск вакансий с высокой зарплатой; поиск вакансий без опыта работы.
- Модернизация: class Vacancy -> создает экземпляр с данными о вакансии и ячейкой хранения ссылки на следующую вакансию; после чтения фаила и запроса пользователя создается односвязный список экземпляров вакансий; вывод так же работает с односвязным списком экземпляров вакансий.
Папка data: Фаил job.json с вакансиями, фаил user.txt с данными пользователя.