В этом проекте вам предстоит написать парсер для сайтов.
Парсинг - это процесс сбора и систематизации данных из различных источников.
Это довольно распространенная задача для Python-разработчиков, которую можно встретить на платформах с фриланс проектами. Например, по этой ссылке вы можете посмотреть на подобное задание из хабра.
👩🏻💻 **Задача:** нужно написать парсер для сайта, который собирает текущие вакансии в России для Python-разработчиков, а также составить документ для возможных откликов.Собирать информацию вы можете с помощью анализа странички и с помощью API сайта.
API – это механизм, который позволяет различным программам взаимодействовать друг с другом, используя набор определенных правил. Подробнее про API вы можете прочитать по этой ссылке.
Ниже вы можете увидеть основные шаги по написанию программы с указание тем и уроков, которые могут вам помочь.
Для удобства реализации, все необходимые классы и функции, которые будут использованы в задании и которые необходимо реализовать, доступны по ссылке
- Делайте точечные коммиты в репозиторий на протяжении всей работы над курсовой. Можно даже вести работу в нескольких ветках.
-
Создайте следующие файлы для программы:
- файл с функциями - utils.py
- файл с классами программы - classes.py
- файл с основным телом программы - main.py
-
Ознакомьтесь с 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)
-
-
Просмотрите сайт superjob:
-
Необходимо понять, какие параметры передавать в запрос, чтобы получить выборку по всем вакансиям.
Прежде чем начать использовать API, необходимо зарегистрироваться и получить токен для работы, более подробная инструкция описана по ссылке описания документации в разделе Getting started
-
-
Создайте абстрактный класс, от которого вы будете создавать классы для работы с сайтами. Этот абстрактный класс должен наследоваться при создании классов для работы с сайтами.
Пример:
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
-
Продумайте логику классов, чтобы ключевое слово, по которому будет производиться поиск вакансии, могло быть не только Python.
-
Создайте в методах класса запросы с помощью request (Урок 3). Затем проанализируйте полученные ответы от superjob и hh.ru, чтобы понять, как превращать данные в объекты и сохранять их.
Совет: на первых этапах тестируйте полученные результаты на маленьких объёмах данных.
-
Создайте класс Vacancy, который будет иметь поля:
- “Название вакансии”
- “Ссылка на вакансию”
- “Описание вакансии”
- “Зарплата вакансии”.
-
Создайте для класса Vacancy строковое представление, используя магический метод repr.
-
Добавьте необходимые методы для класса Vacancy. Например, чтобы правильно устанавливать значения свойств класса (перед установкой значений, их можно почистить от лишних знаков).
- Опишите логику записи найденных вакансий в один txt файл.
- Опишите логику вывода информации по данным пользователя. Пользователь может вывести 10 самых высокооплачиваемых вакансий из файла с результатами или вакансии, в которых не требуется опыт работы.
-
Продумайте создание основных объектов программы .
-
Создайте цикл для сбора 1000 вакансий по заданному ключевому слову для вакансий.
-
Организуйте ввод пользователя для работы с собранными данными
Создайте меню или набор команд, который пользователь может вводить в терминале, чтобы получить итоговые данные по вакансиям из собранного файла.
-
Организуйте вывод итоговой информации.
Работу с файлом лучше осуществлять через файловый дескриптор.
- Добавьте типизацию и проверьте код на правила хорошего тона. Убедитесь, что:
- программа mypy выполняется без ошибок
- в коде отсутствуют “запахи” плохого кода
- Опционально: создайте README к проекту. Это поможет другим программистам ориентироваться в вашем коде.
Критерии оценивания:
- В Git есть точечные коммиты
- В работе используется абстрактный класс (минимум один)
- В работе есть использование API
- В коде есть работа со строками
- Программа mypy выполняется без ошибок
- В коде отсутствуют “запахи” плохого кода
- Используется библиотека request
- В ходе работы программы создается файл со списком вакансий
- Пользователь может вывести из файла набор вакансий по определенным критериям
- Есть работа с файловым дескриптором
- В работе есть итоговый файл с вакансиями