Skip to content

igorkonov/parser_vacancies

Repository files navigation

Курсовой проект по ООП “Парсер вакансий”

💡 **Курсовая работа** - это возможность закрепить знания из модуля и написать полноценный проект, который можно смело добавить в портфолио.

В этом проекте вам предстоит написать парсер для сайтов.

Парсинг - это процесс сбора и систематизации данных из различных источников.

Это довольно распространенная задача для Python-разработчиков, которую можно встретить на платформах с фриланс проектами. Например, по этой ссылке вы можете посмотреть на подобное задание из хабра.

Программа для парсинга вакансий

👩🏻‍💻 **Задача:** нужно написать парсер для сайта, который собирает текущие вакансии в России для Python-разработчиков, а также составить документ для возможных откликов.

Собирать информацию вы можете с помощью анализа странички и с помощью API сайта.

API – это механизм, который позволяет различным программам взаимодействовать друг с другом, используя набор определенных правил. Подробнее про API вы можете прочитать по этой ссылке.

Ниже вы можете увидеть основные шаги по написанию программы с указание тем и уроков, которые могут вам помочь.

Для удобства реализации, все необходимые классы и функции, которые будут использованы в задании и которые необходимо реализовать, доступны по ссылке

Этап 0. Необходимые рекомендации

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

Этап 1. Подготовка к работе

  1. Создайте следующие файлы для программы:

    • файл с функциями - utils.py
    • файл с классами программы - classes.py
    • файл с основным телом программы - main.py
  2. Ознакомьтесь с API сайта hh.ru

    • https://github.com/hhru/api/blob/master/docs/general.md Необходимо понять, какие параметры передавать в запрос, чтобы получить выборку по всем вакансиям в Росиии. Пример запроса (здесь указано только кол-во объектов на странице и ее номер):

      par = {'per_page': '10', 'page':i}
      requests.get(self.url, params=par)
      
  3. Просмотрите сайт superjob:

    • https://api.superjob.ru/

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

      Прежде чем начать использовать API, необходимо зарегистрироваться и получить токен для работы, более подробная инструкция описана по ссылке описания документации в разделе Getting started

Этап 2. Создание структуры программы

  1. Создайте абстрактный класс, от которого вы будете создавать классы для работы с сайтами. Этот абстрактный класс должен наследоваться при создании классов для работы с сайтами.

    Пример:

    class Engine(ABC):
        @abstractmethod
        def get_request(self):
            pass
    
    		@staticmethod
    		def get_connector(file_name):
    				""" Возвращает экземпляр класса Connector """
    				pass
    
    class HH(Engine):
        def get_request(self):
            pass
    
    class Superjob(Engine):
        def get_request(self):
            pass
  2. Продумайте логику классов, чтобы ключевое слово, по которому будет производиться поиск вакансии, могло быть не только Python.

  3. Создайте в методах класса запросы с помощью request (Урок 3). Затем проанализируйте полученные ответы от superjob и hh.ru, чтобы понять, как превращать данные в объекты и сохранять их.

    Совет: на первых этапах тестируйте полученные результаты на маленьких объёмах данных.

  4. Создайте класс Vacancy, который будет иметь поля:

    • “Название вакансии”
    • “Ссылка на вакансию”
    • “Описание вакансии”
    • “Зарплата вакансии”.
  5. Создайте для класса Vacancy строковое представление, используя магический метод repr.

  6. Добавьте необходимые методы для класса Vacancy. Например, чтобы правильно устанавливать значения свойств класса (перед установкой значений, их можно почистить от лишних знаков).

Этап 3. Написание функций для работы с файлами

  1. Опишите логику записи найденных вакансий в один txt файл.
  2. Опишите логику вывода информации по данным пользователя. Пользователь может вывести 10 самых высокооплачиваемых вакансий из файла с результатами или вакансии, в которых не требуется опыт работы.

Этап 4. Создание основной логики программы

  1. Продумайте создание основных объектов программы .

  2. Создайте цикл для сбора 1000 вакансий по заданному ключевому слову для вакансий.

  3. Организуйте ввод пользователя для работы с собранными данными

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

  4. Организуйте вывод итоговой информации.

    Работу с файлом лучше осуществлять через файловый дескриптор.

Этап 5. Наведение порядка

  1. Добавьте типизацию и проверьте код на правила хорошего тона. Убедитесь, что:
    • программа mypy выполняется без ошибок
    • в коде отсутствуют “запахи” плохого кода
  2. Опционально: создайте README к проекту. Это поможет другим программистам ориентироваться в вашем коде.

Этап 6. Отправка решения

👩🏻‍💻 Прежде, чем отправить работу на проверку, убедитесь, что ваше решение удовлетворяет перечисленным ниже критериям:

Критерии оценивания:

  • В Git есть точечные коммиты
  • В работе используется абстрактный класс (минимум один)
  • В работе есть использование API
  • В коде есть работа со строками
  • Программа mypy выполняется без ошибок
  • В коде отсутствуют “запахи” плохого кода
  • Используется библиотека request
  • В ходе работы программы создается файл со списком вакансий
  • Пользователь может вывести из файла набор вакансий по определенным критериям
  • Есть работа с файловым дескриптором
  • В работе есть итоговый файл с вакансиями

About

parser vacancies of HeadHunter and SuperJob

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages