Веб-парсинг

Используя язык программирования Python, можно быстро и эффективно «очистить» данные из Интернета.

Веб-скрапинг определяется как:

инструмент для преобразования неструктурированных данных в Интернете в машиночитаемые структурированные данные, готовые для анализа. ("источник")

Веб-скрапинг - ценный инструмент в наборе навыков специалиста по обработке данных.

Что именно очищать?

Общедоступные данные

Сайт KanView поддерживает Прозрачность в правительстве. Это тоже слоган сайта. На сайте представлены данные о заработной плате штата Канзас. И это здорово!

Тем не менее, как и многие правительственные веб-сайты, он скрывает данные в детализированных ссылках и таблицах. Для этого часто требуется «навигация по принципу наилучшего предположения», чтобы найти конкретные данные, которые вы ищете. Я хотел использовать общедоступные данные об университетах Канзаса в исследовательском проекте. Для начала мне нужно было очистить данные с помощью Python и сохранить их как JSON.

Ссылки JavaScript увеличивают сложность

Парсинг веб-страниц с помощью Python часто требует не более чем использования модуля Beautiful Soup для достижения цели. Beautiful Soup - популярная библиотека Python, которая упрощает реализацию веб-парсинга за счет обхода DOM (объектной модели документа).

Однако сайт KanView использует ссылки JavaScript. Поэтому примеры с использованием Python и Beautiful Soup не будут работать без дополнительных дополнений.

Селен на помощь

Пакет Selenium используется для автоматизации взаимодействия веб-браузера с Python. С помощью Selenium возможно программирование сценария Python для автоматизации веб-браузера. Впоследствии эти надоедливые ссылки JavaScript больше не будут проблемой.

Selenium начнет сеанс браузера. Чтобы Selenium работал, он должен получить доступ к драйверу браузера. По умолчанию он будет искать в том же каталоге, что и скрипт Python. Ссылки на драйверы Chrome, Firefox, Edge и Safari доступны здесь. В приведенном ниже примере кода используется Firefox:

python_button.click() выше указывает Selenium щелкнуть ссылку JavaScript на странице. После перехода на страницу «Заголовки вакансий» Selenium передает исходный код страницы Beautiful Soup.

Переход на красивый суп

Beautiful Soup остается лучшим способом обхода DOM и очистки данных. После определения пустого списка и переменной счетчика пора попросить Beautiful Soup захватить все ссылки на странице, соответствующие регулярному выражению:

Из приведенного выше примера видно, что Beautiful Soup будет извлекать ссылку JavaScript для каждой должности в государственном агентстве. Теперь в блоке кода цикла for / in Selenium будет щелкать каждую ссылку JavaScript. Beautiful Soup будет извлекать таблицу с каждой страницы.

pandas: Библиотека анализа данных Python

Beautiful Soup передает результаты пандам. Pandas использует свою функцию read_html для чтения данных таблицы HTML в фрейм данных. Фрейм данных добавляется к ранее определенному пустому списку.

Прежде чем блок кода цикла будет завершен, Selenium необходимо нажать кнопку «Назад» в браузере. Это делается для того, чтобы следующая ссылка в цикле была доступна для перехода на страницу со списком вакансий.

Когда цикл for / in завершился, Selenium посетил каждую ссылку с названием вакансии. Beautiful Soup извлек таблицу с каждой страницы. Pandas сохранил данные из каждой таблицы в фреймворке данных. Каждый фрейм данных - это элемент в списке данных. Отдельные фреймы данных таблицы теперь должны объединиться в один большой фрейм данных. Затем данные будут преобразованы в формат JSON с помощью pandas.Dataframe.to_json:

Теперь Python создает файл данных JSON. Готово к использованию!

Автоматизированный процесс быстрый

Описанный выше автоматизированный процесс парсинга веб-страниц завершается быстро. Selenium открывает окно браузера, в котором вы видите работающее. Это позволяет мне показать вам снимок экрана, показывающий, насколько быстр этот процесс. Вы видите, как быстро скрипт переходит по ссылке, захватывает данные, возвращается и щелкает следующую ссылку. Благодаря этому получение данных по сотням ссылок занимает считанные минуты.

Полный код Python

Вот полный код Python. Я включил импорт для табуляции. Для этого требуется дополнительная строка кода, которая будет использовать табуляцию для удобной печати данных в интерфейсе командной строки:

Заключение

Очистка веб-страниц с помощью Python и Beautiful Soup - отличный инструмент для ваших навыков. Используйте парсинг веб-страниц, когда данные, с которыми вам нужно работать, общедоступны, но не всегда доступны для удобства. Когда JavaScript предоставляет или «скрывает» контент, автоматизация браузера с помощью Selenium гарантирует, что ваш код «видит» то, что должны видеть вы (как пользователь). И, наконец, когда вы очищаете таблицы, заполненные данными, pandas - это библиотека анализа данных Python, которая справится со всем этим.

Ссылка:

Следующая статья была полезной ссылкой для этого проекта:

Https://pythonprogramminglanguage.com/web-scraping-with-pandas-and-beautifulsoup/

Свяжитесь со мной в любое время в LinkedIn или Twitter. И если вам понравилась эта статья, дайте ей несколько аплодисментов. Я буду искренне признателен.

Https://www.linkedin.com/in/davidagray/