Скрипт в формате автотеста, который автоматически откликается на вакансии по заданным параметрам.
Гифка "зависает" на этапе пагинации, нужно подождать ~15 сек (сейчас этой проблемы уже нет, но перезаписывать лень). На релевантность вакансий не смотрим, тут просто показ, как работает скрипт.
- Скачиваем этот репозиторий
- Жмём комбинацию
win + R
- В открывшемся окне пишем
cmd
- Переходим в директорию, куда скачали репозиторий через команду
cd
. Например:cd C:\Users\User\Downloads
- Пишем
npm start
- В открывшемся интерфейсе заполняем свои параметры, аналогично примерам. То же самое можно сделать вручную, открыв файл "settings.txt" в папке репозитория. Login и Password сейчас заполнять не нужно, они под виртуалку node.js, которая сейчас не готова.
Логин от hh
login=login
Пароль от hh
password=password
Место расположения файла запуска Google Chrome.
userDataDir=C:/Users/User/AppData/Local/Google/Chrome/User Data
Место расположения профилей хрома.
executablePath=C:/Program Files/Google/Chrome/Application/chrome.exe
Место, куда сохранять эксель файл с данными о вакансиях, которые пропустили и на которые откликнулись.
outputPath=C:/Users/User/JobuxAuto/historian
Названия должностей, на которые хотим откликаться.
jobTitles=Fullstack-аналитик, Fullstack аналитик, Фулстек-аналитик, Фулстек аналитик, Бизнес-аналитик, Бизнес аналитик, Business Analyst, Аналитик бизнес-процессов, Системный аналитик, System Analyst
Слова-исключения, присутствие которых в описании вакансии автоматически игнорится скриптом.
exclusionWords=Аккаунт, Account, Помощник, Ассистент, Стажёр, Стажер, Стажировка, 1С, 1C, Bitrix, Bitrix24, Битрикс, Битрикс24, CRM, C1, C2, С1, С2
Сфера деятельности компании.
fieldSelectors=7
Страна поиска.
countrySelectors=113, 5, 40, 9, 16, 28, 1001, 48, 97
Максимальное количество страниц для извлечения вакансий.
pageNum=40
Максимальное количество вакансий, на которое хотим откликнуться.
appliedCount=200
Приоритет вакансий по требуемому опыту работы.
experienceOrder='Опыт 1-3 года':1,'Опыт 3-6 лет':2,'Без опыта':3,'Опыт более 6 лет':4
Название резюме, которым хотим откликнуться.
resumeText=Fullstack-аналитик
Headless функция (false - с интерфейсом ; true - без интерфейса, через консоль).
headless=false
Выбор режима запуска через локальный профиль браузера или через виртуальную машину Node.
executionMode=local
Сейчас там все параметры стоят на поиск по всему миру и в сфере айти. Чтобы поменять надо открывать хедхантер, перейти в расширенный поиск и открыть нужный раздел. Затем по конкретному пункту кликнуть правой кнопкой мыши и выбрать "Inspect". Откроется devtools и в нём нужно найти цифру этого элемента. На примере изображения это будет "47" для нефтегаза.
Реализация через автотест очень плохая сама по себе. hh выпуская обновления ломает скрипту обе ноги.
Я с этим мирился, потому что очень не хотел завязываться на их API и токене, так как потенциально они могут перестать мне их предоставлять и я в итоге всё равно вернусь к автотесту.
В итоге я решил, что максимально оформлю этот репозиторий (добавлю how-to, оформлю и раскидаю таски в гитхаб раздел "Issues", полное описание), сделаю MVP, а потом заморожу и начну делать ту же задумку, но через полноценное API.
- node.js должен быть скачан и установлен. Ссылка: https://nodejs.org/en
- ChromeDriver должен быть скачан и установлен. Ссылка: https://googlechromelabs.github.io/chrome-for-testing/
- Браузер по умолчанию: Google Chrome (в других браузерах селекторы могут работать некорректно). Ссылка: https://www.google.com/intl/ru_ru/chrome/
- ОС: тестировал на Windows 10. За остальные сказать не могу.
- Сломанные вакансии: иногда встречаются отдельные вакансии, на которых программа встаёт в ступор и может прерывать работу. Причем это бывает неоднократно и внезапно после нескольких запусков он может всё-таки откликнуться на эту вакансию. Причина неизвестна. Вариант решения: с отключенным режимом headless вручную откликнуться на эту вакансию и запустить программу по новой.
- Поломка браузера: на самых ранних версиях программы один единственный раз столкнулся с тем, что произошла рассинхронизация браузера Google Chrome с профилем гугла и простым релогом это не решалось, багнулось намертво, пришлось переустановить его два или три раза... Для тех, у кого включена синхронизация с профилем это не должно стать проблемой, так как после установки всё вернётся. А вот если вы держите настройки локально - найдите их и сделайте бэкап перед установкой.