Время прочтения: 4 мин.
Парсинг – это автоматизированный сбор информации, её преобразование и выдача в структурированном виде.
Цель поста: рассмотреть парсинг данных сразу, непосредственно в приложение.
Эта публикация будет полезной для всех, кто только начинает знакомиться с Django и писать свои первые проекты.
Рассмотрю на примере приложения по поиску работы, данные буду брать с популярного сайта HeadHunter.
Первым шагом создам файл «parsers.py» в приложении.
Прописываю данный код в файле и запускаю его. В приложении появится файл «work.html». Открываю созданный файл и вижу идентичную страницу hh.ru, url-адрес которой я указал. Простым языком, я скопировал нужную информацию сразу в приложение.
За отображение страницы отвечает словарь «headers», в нём указаны «user-agent» и «Accept». Эти данные беру с сайта hh.ru во вкладке «Network»
Далее напишу функцию, которая будет собирать всю нужную информацию о вакансиях.
Произведу импорт библиотеки для парсинга HTML и XML документов BeautifulSoup.
Создам два списка: список, в который буду помещать информацию о вакансии и список с возможными ошибками, чтобы во время работы сервер работал исправно.
В коде сайта нахожу html разметку, в которой находятся нужные поля, для того, чтобы прописать к ним путь.
Для наглядности возьму несколько полей: название вакансии, её описание, ссылку и компанию, которая эту вакансию предоставляет.
Сделаю дополнительные проверки для полей с описанием и компанией, так как бывают случаи, что они отсутствуют, этим самым исключу появление ошибок.
Меняю формат файла «word.html» на «word.json» и запускаю его. Если консоль не выдала никаких ошибок, в содержимом файла увижу списки с вакансиями, которые у меня получились. Таким образом, я выбрал только необходимые поля и наполнил приложение информацией.
Таким же образом я могу сделать несколько подобных функций для нескольких сайтов с вакансиями для более обширного поиска.
Списки с информацией есть, теперь их необходимо связать с приложением и базой данных.
В корне приложения создаю файл «run_service.py», пропишу в нём связь между Django и собранными данными.
Произведу необходимые импорты.
Покажу файлу “run_server” в каком конкретно приложении он находится. Простым языком, получаю его полный путь.
При помощи библиотеки «sys» добавляю системные пути. И покажу файлу из какого приложения ему брать необходимые настройки.
Методом «setup» свяжу файл с приложением Django.
После того как я связал информацию о вакансиях с приложением, импортирую ранее созданные модели. Если произвести импорт выше, связка работать не будет.
Пропишу «url» сайтов, с которых беру информацию о вакансиях.
Объявлю переменными города и языки программирования.
Создам два цикла, один из них будет собирать всю информацию в одно целое, а второй сохранять наши готовые вакансии в базу данных. Предусмотрю появление ошибок.
Запускаю сервер и делаю проверку приложения.
Выставляю параметры поиска.
Получаю список вакансий.
Естественно, на оригинальных сайтах по поиску работы намного удобнее и эффективнее искать вакансии, но это приложение написано для наглядного примера реализации парсинга в Django.
В заключение можно сказать, что данный способ парсинга удобен в том случае, если вам необходимо быстро наполнить свое приложение информацией (если база данных отсутствует) для проверки его работоспособности, будь то интернет-магазин или сайт с публикациями.
Спасибо за уделённое время, удачи!