Парсинг вакансий с использованием Python + Selenium WebDriver
Table Of Content
Как всегда, давайте сначала определим нашу цель проекта! Мы будем использовать библиотеку Selenium для парсинга информации о вакансиях с сайта для поиска работы в Великобритании - Job Site (https://www.jobsite.co.uk/) и сохранения всего в файл csv. Этот проект состоит из двух частей. Сначала мы автоматизируем процесс поиска (Название вакансии: Software Engineer, Город: Манчестер, Радиус: 30 миль). Затем мы хотим сохранить следующую информацию в одном файле csv:
- Название вакансии
- Город
- Зарплата
- Тип контракта
- Описание вакансии (отрывок)
Финальный результат должен выглядеть так (выдержка):
Требования к вакансии (название вакансии, город, радиус) можно изменить внутри скрипта. Скрипт самостоятельно займется процессом поиска и будет работать автоматически. В первой части инициализируется веб-драйвер и указываются требования к вакансии (выдержка):
Теперь мы получим результаты поиска вакансий на основе наших требований. Чтобы иметь возможность сохранить необходимые данные, нам нужно создать переменные и получить доступ к соответствующим элементам. Поскольку мы будем работать со списками, нам нужно использовать метод "find_elements", который поставляется вместе с Selenium WebDriver и возвращает коллекцию веб-элементов. Если вы хотите сохранить результаты нескольких страниц, вам нужно работать с пагинацией. В нашем примере мы хотим получить доступ к результатам трех страниц (каждая страница содержит 20 результатов - в сумме мы сохраним 60 вакансий в файле csv). Для работы с пагинацией вы будете выполнять цикл по нескольким страницам. В нашем примере мы указываем количество страниц в функции range.
Затем нам нужно открыть файл csv и указать имя файла (внутри цикла). С помощью метода write мы можем сохранить наши результаты в файле csv:
Кроме того, мы также должны поместить часть с пагинацией внутри цикла for:
Необходимо найти кнопку "следующая страница", чтобы перейти на следующую страницу и сохранить результаты на следующей странице. Для этого мы сохраняем элемент в переменную и "кликаем по этому элементу":
После того, как вы указали свои критерии поиска, информацию, которую вы хотите извлечь, и сколько страниц вы хотите получить доступ к, вы гибки в отношении количества данных, которые хотите сохранить.
Если вас интересует пошаговое руководство по этому проекту, посмотрите видеоверсию на Youtube: