Skip to content

Парсинг PDF файлов резюме с сайта hh.ru. Учебный проект.

Notifications You must be signed in to change notification settings

YuriMoroz/resumepdfparser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

v1.3. от 14.08.2022

Теперь файлы сохраняются на сервере, а парсинг осуществляется в фоновом задании, вне запроса загрузки файлов. Пока не нашёл как вернуть сообщение пользователю об окончании задания. Пользователь сам должен проверять готовность, отправляя запрос.

v1.2. от 11.08.2022

Папку public/data, в которой лежит файл result.csv вчера добавил в .gitignore. А сегодня оказалось, что пустые папки гит не отслеживает. После выгрузки на гитхаб и автодеплоя прод перестал работать, т.к. папка data отстутствует. Решил проблему, добавив файл .keep в папку data. Сделал тестовый контур с автодеплоем, а от прода автодеплой отключил. Научился пользоваться логами heroku. Очень они помогли, т.к. локально приложение работало, а на сервере нет из-за отсутствия папки data.

v1.1. от 10.08.2022

В приложении небольшие изменения: удалена модель и миграция, добавлен фавикон. Создал репозиторий на гитхабе (первый был на heroku), связал его с heroku, настроил автодеплой. Теперь при помещении изменений на гитхаб они сразу попадают в прод.

v1.0. от 09.08.2022

Приложение предназначено для парсинга PDF файлов резюме с сайта hh.ru.

На вход подаются файлы резюме, на выходе получается csv файл следующего формата:

Имя файла ; блок "отклик на вакансию" ; фамилия ; имя ; отчество ; телефон1 ; телефон2 ; e-mail

В дальнейшем файл будет загружаться в СРМ-систему.

Заказчиком выступил мой друг. Для него это реальная производственная задача и учебная задача для меня.

На этой задаче я научился:

  • загружать файлы на сервер
  • загружать файлы на сервер множественным выбором
  • преобразовывать pdf в текст (гем)
  • искать телефоны и e-mail'ы в тексте (регулярные выражения)
  • понимать, почему не работает регулярное выражение (неразрывный пробел в тексте)
  • работать с массивами (объединять в строку)
  • работать со строками
    • разбивать на массив, в том числе с фикс. кол-вом элементов
    • удалять символы из строки
    • удалять пробелы в начале и конце строки
  • хранить загруженные файлы в папке на сервере
  • удалять файлы с сервера после использования
  • отправлять post и get запросы из шаблона (view) на сервер
  • прописывать маршруты (routes)
  • использовать match и gsub
  • создавать csv файлы (гем)
  • изменять кодировку (с UTF-8 на cp1251)
  • использовать flash[:notice] для создания ссылки на скачивание файла

Что не получилось:

  • парсить загруженный pdf файл без сохранения на сервере. Т.к. гем 'pdf-reader' принимает на вход имя файла, самым простым (но не изящным) решением было записать файл в папку на сервере и передать ему имя. Варианты решения:

    • поискать другой гем, который сможет принимать на вход сам файл
    • взять исходник этого гема и доработать его соответствующим образом
  • сделать редирект на главную страницу после скачивания файла. Варианты решения есть в интернете, но сходу не получилось с ними разобораться. Нужно глубже изучить материал и вернуться позже к этой проблеме.

Проект сдан заказчику на тестирование, т.к. даже без редиректа функционал полностью работоспособен.

Задача решалась (и была решена!) в балансе между обучением и получением готового рабочего варианта для заказчика. Попытка сделать решение технически идеальным (уклон в обучение) привела бы затягиваю срока сдачи, вплоть до бесконечности. Попытка сделать рабочий вариант быстрее, не обращая внимания на шероховатости, привела бы к просадке в обучении.

На версию 1.0 было потрачено 3 дня от постановки задачи до сдачи проекта заказчику. Результатом доволен. Вероятно, я продолжу дорабатывать проект. С редиректом после скачивания файла уж точно надо разобраться.

Выражаю благодарность команде "Хороший программист", по материалам которой я обучаюсь. В особенности их совету, данному здесь: https://rubyrush.ru/steps/what-to-do-next-04 Благодаря ему я и получил эту задачу, которая продвинула меня в обучении.

10.08.2022 ruby: 3.2.1 rails 7.0.3.1 gems: 'pdf-reader', 'csv'

About

Парсинг PDF файлов резюме с сайта hh.ru. Учебный проект.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published