July 1, 2023

Анализ HR вакансий. Часть 2. Знакомство с HeadHunter API

Документация по API HeadHunter [1] содержит исчерпывающую информацию, настолько, что можно потратить много времени на её изучение. Мы же, по традиции, сфокусируемся на главном. Для нашей задачи по сбору активных HR вакансий, первое, что нужно сделать – это завести своё приложение. Это требуется для того, чтобы получить OAuth токен [2], который мы будем использовать для аутентификации при работе с API. На самом деле, какие-то запросы у вас могут отработать и без него, но никто не гарантирует надежной работы при таком подходе, поэтому мы создадим приложение и получим токен.


Авторизуемся через личный аккаунт hh.ru [3] на сайте dev.hh.ru [4], затем нажимаем Добавить приложение -> Регистрация нового приложения

Заполняем заявку: придумайте название приложения, опишите для чего оно будет использоваться и укажите Redirect URI – он понадобится далее для получения OAuth токена. К примеру, у меня это просто ссылка на мой телеграм-канал.

Мою заявку одобрили приблизительно через неделю. В итоге приложение создано, и вы можете увидеть ваши Redirect URI, Client ID и Client Secret, всё это составные части получения заветного OAuth токена.

Но помимо этого списка, нам нужно ещё получить code. Для этого подставьте параметры вашего приложения вместо YOUR_CLIENT_ID и YOUR_REDIRECT_URI вот в эту ссылку и откройте её в браузере:

https://hh.ru/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI

Сталкиваемся с частью, которая осложняет автоматизацию этого процесса и нажимаем Продолжить

Полученный code будет указан в пути открывшегося окна, забираем его себе.

Мы собрали все кусочки, необходимые для получения OAuth токена. Переходим в R чтобы завершить этот квест. Если R не установлен на вашем компьютере, то скачайте его и RStudio в качестве визуального интерфейса, и установите на ваш компьютер [5]. В следующей статье R будет основным инструментом для парсинга вакансий.

#Библиотека для работы с HTTP (для установки install.packages('httr'))
library(httr)

#Все наши id
client_id <- 'XXXX'
client_secret <- 'XXXX'
code <- 'XXXX'

#POST запрос к hh.ru для получения токена
oauth_endpoint <- "https://hh.ru/oauth/token"

response <- POST(
  oauth_endpoint, 
  body = list(
    grant_type = "authorization_code",
    client_id = client_id,
    client_secret = client_secret,
    code = code,
    redirect_uri = "https://t.me/h0h1_hr_analytics"
  ),
  encode = "form"
)

#Извлекаем токен
content <- content(response)
access_token <- content$access_token
access_token

Тоже самое, но для поклонников Python. Удобно использьовать дистрибутив Anaconda3, в котором есть и сам язык, и визуальный интерфейс - Jupyter Notebook [6].

#Библиотека для работы с HTTP (для установки !pip install requests)
import requests

#Все наши id
client_id = 'XXXX'
client_secret = 'XXXX'
code = 'XXXX'

#POST запрос к hh.ru для получения токена
oauth_endpoint = "https://hh.ru/oauth/token"

response = requests.post(
    oauth_endpoint,
    data = {
        'grant_type': 'authorization_code',
        'client_id': client_id,
        'client_secret': client_secret,
        'code': code,
        'redirect_uri': 'https://t.me/h0h1_hr_analytics'
    }
)

#Извлекаем токен
content = response.json()
access_token = content['access_token']
print(access_token)

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

Теперь у нас есть база данных и доступы к hh.ru [3] по API, мы готовы к тому, чтобы в следующий раз начать парсить вакансии.

Ссылки

  1. https://github.com/hhru/api
  2. https://ru.wikipedia.org/wiki/OAuth
  3. https://hh.ru/
  4. https://dev.hh.ru/
  5. https://posit.co/download/rstudio-desktop/
  6. https://www.anaconda.com/download