"""Первый запрос. Python 3.10+, установка дополнительных библиотек не нужна.""" import getpass import json import os from urllib.error import HTTPError, URLError from urllib.parse import urlencode from urllib.request import Request, urlopen base = os.getenv('HH_STUDY_BASE', 'https://milushkoff.ru/hh-api').rstrip('/') # Ключ вводится при запуске, а не сохраняется в файле с кодом. token = os.getenv('HH_STUDY_TOKEN') or getpass.getpass('Личный API-ключ (ввод скрыт): ') params = {'area': '2', 'text': 'аналитик данных', 'per_page': 1} request = Request(base + '/vacancies?' + urlencode(params), headers={'Authorization': 'Bearer ' + token.strip()}) try: with urlopen(request, timeout=25) as response: data = json.load(response) print('HTTP:', response.status) print('Всего найдено:', data['found']) print('На этой странице:', len(data['items'])) if data['items']: print('Первая вакансия:', data['items'][0]['name']) else: print('По этим условиям вакансий нет. Попробуйте другой запрос.') except HTTPError as error: print('Ошибка HTTP:', error.code) if error.code == 429: print('Подождите Retry-After секунд:', error.headers.get('Retry-After', 'см. ответ сервера')) elif error.code == 401: print('Проверьте личный ключ в кабинете.') else: print('Посмотрите раздел «Ошибки» в инструкции или сообщите преподавателю.') except (URLError, TimeoutError): print('Нет соединения с учебным API. Проверьте интернет и повторите позже.')