Добавить в корзинуПозвонить
Найти в Дзене
Python Pro🐍

Полное руководство по парсингу вакансий с HeadHunter с помощью Python

В этой статье мы разберём пошаговый процесс создания Python-скрипта, который собирает актуальные вакансии с HeadHunter API, обрабатывает их и сохраняет в удобный CSV-файл. Парсинг вакансий полезен для:
✅ Анализа рынка труда (какие навыки востребованы, уровень зарплат)
✅ Автоматизации поиска работы (отслеживание новых вакансий без ручного просмотра)
✅ HR-аналитики (сравнение предложений конкурентов)
✅ Обучения работе с API (практический пример для начинающих) Мы используем библиотеку requests для отправки HTTP-запросов к официальному API HeadHunter. import requests
url = "https://api.hh.ru/vacancies"
params = {
"text": "Python", # Ключевое слово для поиска
"area": "40", # Код региона (40 — Астана)
"per_page": "100", # Количество вакансий (макс. 100)
}
headers = {"User-Agent": "Mozilla/5.0"} # Имитация браузера
response = requests.get(url, params=params, headers=headers)
data = response.json() # Получаем JSON-ответ API возвращает JSON, из которого мы
Оглавление

В этой статье мы разберём пошаговый процесс создания Python-скрипта, который собирает актуальные вакансии с HeadHunter API, обрабатывает их и сохраняет в удобный CSV-файл.

🔍 Зачем это нужно?

Парсинг вакансий полезен для:
Анализа рынка труда (какие навыки востребованы, уровень зарплат)
Автоматизации поиска работы (отслеживание новых вакансий без ручного просмотра)
HR-аналитики (сравнение предложений конкурентов)
Обучения работе с API (практический пример для начинающих)

⚙️ Как работает скрипт?

1. Подключение к API HH.ru

Мы используем библиотеку requests для отправки HTTP-запросов к официальному API HeadHunter.

import requests

url = "https://api.hh.ru/vacancies"
params = {
"text": "Python", # Ключевое слово для поиска
"area": "40", # Код региона (40 — Астана)
"per_page": "100", # Количество вакансий (макс. 100)
}
headers = {"User-Agent": "Mozilla/5.0"} # Имитация браузера

response = requests.get(url, params=params, headers=headers)
data = response.json() # Получаем JSON-ответ

2. Обработка данных

API возвращает JSON, из которого мы извлекаем:

  • Название вакансии
  • Компанию
  • Зарплату (если указана)
  • Опыт работы
  • Ссылку на вакансию
vacancies = []
for item in data.get("items", []):
salary = item.get("salary")
salary_str = (
f"{salary.get('from', '')}-{salary.get('to', '')} {salary.get('currency', '')}"
if salary else "Не указана"
)

experience = item.get("experience", {}).get("name", "Не указано")

vacancies.append({
"title": item.get("name", "Без названия"),
"link": item.get("url", "#"),
"company": item.get("employer", {}).get("name", "Не указано"),
"salary": salary_str,
"location": item.get("area", {}).get("name", "Не указано"),
"experience": experience,
})

3. Сохранение в CSV

Для записи данных в табличный формат используем csv.DictWriter.

import csv
def save_to_csv(vacancies, filename="vacancies.csv"):
with open(filename, mode="w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=["title", "link", "company", "salary", "location", "experience"])
writer.writeheader()
writer.writerows(vacancies)

4. Запуск скрипта

if __name__ == "__main__":
vacancies = get_vacancies_from_api()
save_to_csv(vacancies)
print(f"✅ Сохранено {len(vacancies)} вакансий в vacancies.csv")

📊 Что можно улучшить?

  1. Попробуйте добавить фильтрацию по зарплате

🚀 Пример готового CSV

💡 Заключение

Теперь вы умеете автоматически собирать вакансии с HH.ru! Этот скрипт можно адаптировать под любую профессию или регион.

📌 Хотите больше Python-автоматизаций? Пишите в комментариях, какие задачи вам интересны! 🚀