Документация по 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 вот в эту ссылку и откройте её в браузере:
Сталкиваемся с частью, которая осложняет автоматизацию этого процесса и нажимаем Продолжить
Полученный 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].
Не скрою - процесс несложный, но занудный и самое неприятное, что токен “живет” только две недели, то есть это упражнение потребуется повторять регулярно.
Теперь у нас есть база данных и доступы к hh.ru [3] по API, мы готовы к тому, чтобы в следующий раз начать парсить вакансии.
Ссылки