-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhh_vacancies_collector.py
73 lines (62 loc) · 2.36 KB
/
hh_vacancies_collector.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from main_functions import predict_salary, draw_table, get_vacancies_statistic
import requests
import time
import argparse
def predict_rub_salary_hh(vacancy):
salary = vacancy["salary"]
if not salary:
return None
if salary["currency"] != "RUR":
return None
return predict_salary(salary["from"], salary["to"])
def collect_hh_vacancies(keywords):
vacancies = {}
professional_role_id = 96
city_id = 1
days = 30
for word in keywords:
vacancies[word] = []
pages_number = 1
page = 0
while page < pages_number:
params = {
"professional_role": professional_role_id,
"area": city_id,
"period": days,
"text": word,
"search_field": "name",
"page": page
}
try:
page_response = requests.get(
"https://api.hh.ru/vacancies", params=params
)
page_response.raise_for_status()
page_payload = page_response.json()
pages_number = page_payload["pages"]
page += 1
page_vacancies = page_payload["items"]
for vacancy in page_vacancies:
vacancies[word].append(vacancy)
time.sleep(0.5)
except requests.exceptions.HTTPError:
time.sleep(1)
return vacancies
def draw_hh_statistic(languages):
hh_vacancies = collect_hh_vacancies(languages)
hh_statistic = get_vacancies_statistic(hh_vacancies, predict_rub_salary_hh)
return draw_table(hh_statistic, "HeadHunter Moscow")
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="""Скрипт высчитывает среднюю зарлату по вакансиям разработчиков
в г.Москва на сервисе HeadHunter в разрезе языков программирования.
Выводит итоговую статистику в виде таблицы."""
)
parser.add_argument(
"-l",
"--languages",
nargs="+",
help="список языков программирования для поиска вакансий",
)
args = parser.parse_args()
print(draw_hh_statistic(args.languages))