Идея: проект упрощает поиск, анализ и исследование особенностей вакансий на hh.ru. Скрипт использует API hh.ru для доступа к данным вакансий.
| Title | HeadHunter Find & Research |
|---|---|
| Author | Alexander Kapitanov |
| Language | Python (3+) |
| Release | 14 Aug 2019 |
| License | GNU GPL 3.0 |
Пример установки зависимостей для Python 3.9
git clone <repo.git>
cd <repo>
conda create -n venv python=3.9
conda activate venv
python researcher.py <options>usage: researcher.py [-h] [--text TEXT] [--professional_roles ROLE1 ROLE2 ...] [--num_workers MAX_WORKERS] [--refresh] [--save_result] [--update]
HeadHunter (hh.ru) vacancies researcher
optional arguments:
-h, --help show this help message and exit
-t TEXT, --text TEXT Search query text (e.g. "Machine learning")
-p [PROFESSIONAL_ROLES ...], --professional_roles [PROFESSIONAL_ROLES ...]
Professional role filter (Possible roles can be found here https://api.hh.ru/professional_roles)
-n NUM_WORKERS, --num_workers NUM_WORKERS
Number of workers for multithreading.
-r, --refresh Refresh cached data from HH API
-s, --save_result Save parsed result as DataFrame to CSV file.
-u, --update Save command line args to file in JSON format.Все параметры находятся в конфигурационном файле, пример:
{
"options": {
"text": "Data Scientist",
"area": 1,
"per_page": 50,
"professional_roles": [96, 10]
},
"refresh": false,
"num_workers": 10,
"save_result": false,
"exchanges": ["RUB", "USD", "EUR", "UAH"]
}Входные данные - словарь ключевых значений, формирующих запрос.
Основные параметры:
area- локация поискового запроса (пример:{area: 1}- Москва),text- поисковой запрос для вакансий (пример:{text : Machine Learning}или{text: Java}),per_page- количество вакансий на страницу, по умолчанию 50.professional_roles- фильтр по роли в запросе (возможные значения)
и другие параметры (в зависимости от требуемого запроса).
Пример графика распределения зарплат:
Для запуска скрипта необходимо задать обязательный параметр ключевого запроса поиска. В системах Windows ключевой запрос в двойных кавычках! Например: Machine Learning или JavaScript.
Скрипт запускается из командной строки:
python researcher.py --text "Python Developer"
Можно задать параметр --refresh, который обновляет кешируемые данные о вакансиях. Для повторных запросов, отличающихся от первичного, это обязательный параметр.
python researcher.py --text "Data Mining" --refresh
- Ответ от удаленного ресурса в виде json-массива для текущего курса валют:
{RUR, USD, EUR, UAH}. - На базе словаря входных данных формируется URL для запроса данных с hh.ru через API,
- Создается список всех
idвакансий, - Парсинг JSON в ответ на запрос по всем
idвакансий,- Анализ параметра
salaryдля формирования словаря зарплат:- Для зарплат, указанных в
USDиEURпроизводится пересчёт по текущему курсу рубля, - Для зарплат, указанных до вычета НДФЛ производится пересчёт на реальную зарплату "на руки",
- Для отсутствующих зарплат - пропуск.
- Для зарплат, указанных в
- Создаётся словарь ключевых элементов таблицы,
- Массив содержит поля:
{колонки фрейма* - (см. ниже)}, - Для полей
FromиToпроисходит перерасчет зарплаты, - Ключевые навыки формируются как перечисляемый список,
- Описание вакансий очищается от HTML-тегов с помощью дополнительной функции.
- Массив содержит поля:
- Функция возвращает массив кортежей.
- Анализ параметра
- Преобразование сырых данных в
DataFrameдля дальнейшего анализа. Результат сохраняется на диск в видеcsvфайла. - Анализ
DataFrame- поиск статстических параметров, поиск мат. ожидания, медианы и т.д от зарплат. Классификация по параметрам. - Предсказание зарплат для вакансий, у которых этот параметр не задан.
- Построение информативных графиков.
Пример графика для указанных зарплат:
Колонки фрейма:
| Параметр | Тип | Описание |
|---|---|---|
Ids |
str |
идентификатор вакансии (формирует ссылку на вакансию) |
Employer |
str |
работодатель |
Name |
str |
название вакансии |
Salary |
bool |
указание зарплаты: True / False |
From |
float |
нижний порог зарплаты |
To |
float |
верхний порог зарплаты |
Experience |
str |
опыт работы |
Schedule |
str |
график работы |
Keys |
list |
ключевые навыки |
Description |
str |
описание вакансиии |
Нижний и верхний порог зарплаты пересчитаны в рубли по текущему курсу валюты. Также для зарплат, указанных до вычета НДФЛ производится пересчёт на реальную зарплату "на руки".
Пример наиболее часто используемых ключевых значений:
Выходные данные - таблица в формате csv, созданная с помощью фреймворка pandas. Дополнительно к этой таблице проводится анализ: поиск мат. ожидания, медианы и т.д от зарплат в зависимости от остальных критериев в таблице (например, от опыта работы). Проводится классификация по различным параметрам.
Пример предсказанных зарплат:
Документация API HeadHunter hh.ru
- Kapitanov Alexander
- 2019/08/14.
- GNU GPL 3.0.



![Top words in [Keys / Description] Top words in Key / Description](/hukenovs/hh_research/raw/master/img/most_freq_keys.png)
