Сбор публичных вакансий для аналитики рынка труда
Как построить пайплайн публичных вакансий: официальный API, robots.txt, нормализация, дедупликация, контроль качества и безопасная частота.
Команда InfraProxy
4 февраля 2026 г.•обновлено 18 августа 2026 г.
Для аналитики рынка труда достаточно публичных вакансий и официальных API. Не автоматизируйте вход в аккаунты: сначала проверьте разрешённые выгрузки, затем собирайте минимальный набор полей с ограниченной частотой.
Какие вопросы решает набор вакансий
Публичные объявления позволяют оценить структуру спроса на специалистов, географию найма, частоту упоминания технологий и диапазоны зарплат, когда они указаны самим работодателем.
До запуска зафиксируйте единицу наблюдения. Одна вакансия может повторно публиковаться, переноситься между регионами и менять описание. Без стабильного идентификатора счётчик «новых вакансий» будет завышен.
Минимальная таблица:
CREATE TABLE public_job_postings (
source_id VARCHAR(255) NOT NULL,
source_name VARCHAR(100) NOT NULL,
job_title TEXT NOT NULL,
company_name TEXT,
region TEXT,
salary_min NUMERIC,
salary_max NUMERIC,
currency VARCHAR(3),
published_at TIMESTAMP,
first_seen_at TIMESTAMP NOT NULL,
last_seen_at TIMESTAMP NOT NULL,
source_url TEXT NOT NULL,
PRIMARY KEY (source_name, source_id)
);
first_seen_at нужен для оценки притока, а last_seen_at — чтобы отличить удаление от временной ошибки загрузки.
Сначала официальный API или выгрузка
Порядок выбора источника:
- Официальный API с документированным лимитом.
- Открытая выгрузка или RSS.
- Публичные HTML-страницы, если это разрешено
robots.txtи условиями использования. - Согласованная выгрузка владельца данных для регулярного коммерческого процесса.
Авторизованные разделы, контакты из личного кабинета и скрытые поля не относятся к публичным данным. Не используйте автоматический вход, сохранённые cookie или чужие учётные записи для расширения выборки.
Пайплайн: получение, нормализация, контроль
Разделите процесс на четыре независимых шага:
- Получение. Сохраняйте статус, время ответа и контрольную сумму исходного документа.
- Извлечение. Выделяйте только поля, необходимые аналитике.
- Нормализация. Приводите регионы, валюты и названия ролей к справочникам.
- Контроль качества. Считайте долю пустых полей, дубликаты и резкие изменения объёма.
Не записывайте 0 вместо отсутствующей зарплаты. Это разные состояния: работодатель не указал вилку и работодатель указал нулевое значение.
Как не спутать изменение рынка со сбоем сборщика
Снижение числа вакансий за день ещё не означает падение спроса. Сначала проверьте технические метрики:
| Метрика | Что показывает |
|---|---|
| URL в очереди | Изменился ли объём входных страниц |
Доля 200 |
Получен ли ответ источника |
| Доля пустых карточек | Не изменилась ли разметка |
| Дубликаты | Не сломался ли идентификатор |
| p50/p95 времени ответа | Нет ли деградации источника или маршрута |
429/503 |
Не превышена ли допустимая частота |
Подтверждайте рыночный вывод только после того, как технический контроль стабилен.
Безопасная частота и повторы
Используйте отдельную очередь на каждый домен, малую параллельность и кэш уже обработанных URL. При 429 учитывайте Retry-After. При 503 применяйте ограниченный backoff. После нескольких неудач переносите URL в отдельную очередь, а не повторяйте бесконечно.
Прокси могут разделить ваши рабочие потоки и дать управляемую сеть, но не должны использоваться для обхода опубликованного лимита.
Этичность и персональные данные
Читайте robots.txt, соблюдайте Disallow и Crawl-delay, используйте честный User-Agent и контакт. Не собирайте данные из-под логина и paywall. Не извлекайте персональные контакты кандидатов. Для 152-ФЗ и GDPR заранее определите цель, состав полей, срок хранения и основание обработки.
Если источник предлагает opt-out или просит удалить данные, предусмотрите удаление из сырого слоя, витрин и резервных копий по принятой процедуре.
Следующий шаг
Если команда поддерживает собственный ETL, начните с центра знаний о сборе данных. Если нужна готовая выдача публичных страниц без управления браузерами и прокси, проверьте Scraper API на разрешённом источнике.
Ключевые выводы
- Для анализа рынка труда обычно достаточно публичных вакансий и официальных API.
first_seen_atиlast_seen_atотделяют новые записи от повторных публикаций.- Рыночный вывод нельзя делать до проверки технических метрик сборщика.
- Авторизованные данные и контакты кандидатов не входят в безопасный сценарий.
Краткий ответ: собирайте только публичные вакансии, предпочитайте официальный API и отделяйте изменения рынка от ошибок загрузки и дедупликации.
Нужно получать публичные данные без поддержки собственной инфраструктуры?
Посмотрите возможности Scraper API, условия теста и примеры интеграции.
Перейти к Scraper APIЧитайте также
Автоматизация маркетинговых исследований с помощью веб-скрейпинга
Как автоматизировать маркетинговые исследования: построение дата-пайплайнов, анализ тональности, конкурентное картирование и мониторинг трендов через веб-скрейпинг.
ТехническоеETL-пайплайны с веб-скрейпингом: от извлечения до загрузки
Как строить production-ready ETL-пайплайны с использованием веб-скрейпинга: извлечение, трансформация, загрузка данных, планирование и мониторинг.
ЮридическоеСбор данных из веба в России: 152-ФЗ и легальные способы
Правовые аспекты сбора данных для AI в России: 152-ФЗ, персональные данные, публичная информация, robots.txt. Чек-лист легального краулинга для бизнеса.