Как стать автором
Обновить

Ускоряем процесс поиска работы на HeadHunter

Уровень сложностиПростой

Всем привет!

Я начинающий специалист в области анализа данных, хотел бы поделиться своим опытом в поиске работы на сайте HH. Этот сайт является одним из самых популярных и удобных инструментов для поиска работы в России, однако, при поиске подходящей вакансии, я столкнулся с проблемой траты большого количества времени на ручной отклик на интересующие меня вакансии.

Я задумался о том, как можно ускорить этот процесс. Сначала я рассматривал возможность написания парсера на Selenium, который бы автоматически выполнял действия в веб-браузере. Однако, затем я обнаружил, что на сайте HH есть отличный API, который позволяет оставлять отклики на вакансии с возможностью добавления сопроводительного письма.

Для этого нам понадобятся Python, библиотеки requests, json, API HH. Также необходимо быть авторизованным на сайте HH. Лимит на кол-во откликов в день - 200 штук.

С помощью способа описанного ниже я значительно увеличил кол-во просмотров моего резюме, соответственно увеличилось кол-во приглашений и собеседований. И в итоге я получил оффер на желаемую позицию :)

Подключение к API

Для того, чтобы подключиться к API HH:

  1. Необходимо создать приложение (это можно сделать здесь).

  2. После этого станут доступны Client_ID и Client_Secret, которые необходимы для дальнейшей работы.

  3. Перейти по ссылке (используя Client_ID): https://hh.ru/oauth/authorize?response_type=code&client_id={Client_ID}

  4. После перехода по ссылке нас перенаправят на страницу redirect_url, которую мы указали при создании приложения.

  5. Из адреса страницы мы можем взять authorization_code, который необходим для получения access_token.

  6. Используя Client_ID, Client_Secret и authorization_code мы можем отправить post запрос и получить необходимый токен.

params = {
    'grant_type':'authorization_code',
    'client_id':Client_ID,
    'client_secret':Client_Secret,
    'code':authorization_code}

access_token = json.loads(requests.post(f'https://hh.ru/oauth/token', params=params)\
                          .content.decode())['access_token']

Оставляем отклики

Создадим список компаний, в которые мы хотим направить свой отклик

company_lst = ['Комания_1', 'Компания_2', 'Компания_3']

Следующая часть кода выполняется в цикле, где мы проходим по каждой компании из списка for company in company_lst

Затем, используя язык поисковых запросов HH, мы сформируем запрос, указав, какие слова должны присутствовать в вакансии и в каких ее частях. Для поиска в конкретном поле мы применим двоеточие после его названия. Подробнее о языке поисковых запросов здесь. Сформируем поисковый запрос:

# здесь также можно указать желаемый стек 
search_row = f'NAME:("data analyst" OR "аналитик данных" \
        OR "data аналитик"OR "продуктовый аналитик" \
            OR "Специалист по работе с данными" NOT "стажёр") \
                AND COMPANY_NAME:{company}'

Для всех последующих методов API будем использовать в качестве заголовков HTTP, здесь нам и понадобится access_token:

headers = {
        'Authorization': f'Bearer {access_token}',
        'HH-User-Agent': 'Название вашего приложжения (Почта приложения)'
}

Проходя по каждой компании из списка company_lst в цикле, мы будем использовать поисковый запрос для метода "Поиск по вакансиям" (https://api.hh.ru/vacancies), передавая в него соответствующие параметры. В ответ на наш get-запрос мы получим json с данными по найденным вакансиям, нам нужны будут только их id.

params = {
        'text':search_row, # поисковый запрос
        'area':1, # регион поиска - Москва
        'period':30, # период в днях, за который появились вакансии 
        'per_page': 100 # количество вакансий на странице
}

vacancy_url = 'https://api.hh.ru/vacancies'
vacancies = json.loads(
    requests.get(vacancy_url, headers = headers, params=params).content.decode())

vacancies_ids = [x['id'] for x in vacancies['items']]

Далее напишем шаблон сопроводительного письма, где будем менять название компании в зависимости от того, куда отправляем отклик.

message = f'Шаблон сопроводительного письма для компании {company}'

Чтобы отправить отклик, необходимо узнать id своего резюме, с которым мы хотим его отправить. Для этого воспользуемся методом https://api.hh.ru/resumes/mine. Способ ниже вернет список всех резюме, необходимо будет найти id нужного резюме.

resume_list = json.loads(
    requests.get('https://api.hh.ru/resumes/mine', headers = headers).content.decode()
)['items']

И наконец, если список id вакансий непустой, мы пройдемся по нему циклом, отправляя наш отклик с сопроводительным письмом по каждой подходящей вакансии текущей компании.

if len(vacancies_ids) > 0:
  for id in vacancies_ids:
    params = {
          'vacancy_id':id, # id вакансии
          'resume_id':'ID резюме', 
          "message":message # текст сопроводительного документа
          }
  
    click_url = 'https://api.hh.ru/negotiations'
    requests.post(click_url, headers = headers, params=params)

После отправки запроса, отклик появится в личном кабинете HH.

P.S. Для отклика на вакансии можно использовать и другие методы, например, не используя список компаний, а просто находя нужные вакансии с помощью поискового запроса, можно добавлять множество фильтров, в том числе размер заработной платы, регион и т.д. Более подробно с возможностями API можно познакомиться здесь.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.