/
megaokna43
/
courses_4
Обзор
Документация
Войти
/
megaokna43
/
courses_4
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/parser.py
44 строки
3 KB
Anton Konovalov
добавление приватности атрибутам класса и проверки статуса кода ответа
11 дек 2024, 18:44
11 дек 2024, 18:44
c3859e6
Код
Авторство
О чём код?
import requests from abc import ABC, abstractmethod class Parser(ABC): """Parser - это абстрактный базовый класс, который определяет один абстрактный метод: load_vacancies. Этот метод должен быть реализован в производном классе НН.""" @abstractmethod def load_vacancies(self, keyword, pages=20): pass class HH(Parser): """ Класс, который инициализации работы с API HeadHunter и наследует от абстрактного класса Parser реализацию метода load_vacancies. """ def __init__(self): """Конструктор класса, который инициализирует URL для API HeadHunter, заголовки HTTP-запроса и его параметры.""" self.__url = 'https://api.hh.ru/vacancies' self.__headers = {'User-Agent': 'HH-User-Agent'} self.__params = {'text': '', 'page': 0, 'per_page': 100} def load_vacancies(self, keyword, pages=20): """ Метод загружает вакансии с API HeadHunter, используя указанное ключевое слово. Он выполняет несколько запросов к API, чтобы загрузить до 20 страниц результатов. Каждый запрос использует параметры, определенные в конструкторе, и обновляет значение параметра page для загрузки следующей страницы. Метод возвращает список всех загруженных вакансий.""" self.__params['text'] = keyword all_vacancies = [] for page in range(pages): self.__params['page'] = page print(f"Скачиваю страницу: {page}") try: response = requests.get(self.__url, headers=self.__headers, params=self.__params) # Проверяем код ответа if response.status_code == 200: vacancies = response.json().get('items', []) all_vacancies.extend(vacancies) else: print(f"Ошибка при запросе к API: {response.status_code} - {response.text}") except requests.exceptions.RequestException as e: print(f"Ошибка при запросе к API: {e}") return all_vacancies