Как закодировать парсер с помощью Requests и Beautiful Soup
Что такое парсер?
«Веб-скрейпер», также называемый «веб-сборщиком» или «веб-извлекателем данных», представляет собой программу, которая собирает и извлекает («извлекает») информацию из Интернета. Получение контента с длинной страницы или нескольких страниц веб-информации можно рассматривать как простой тип веб-скрапинга. Одним из преимуществ парсинга веб-страниц является то, что он позволяет нам находить актуальную и полезную информацию и сохранять ее для последующего использования в автоматическом режиме.
Фундаментальная концепция парсинга веб-страниц заключается в том, что мы берем уже существующие данные HTML, идентифицируем их с помощью парсера и преобразуем в более удобный формат. Как правило, цель состоит в том, чтобы хранить эти данные в формате JSON, CSV, pandas DataFrame или в каком-либо другом формате, подходящем для преобразования данных и манипулирования ими.
Веб-скрейперы имеют множество практических применений, в том числе:
- Сбор адресов электронной почты. Веб-скрапинг — обычная практика среди предприятий, использующих массовую рассылку по электронной почте в качестве маркетингового инструмента. Например, веб-скрапинг иногда используется для сбора контактной информации с платформ социальных сетей.
- Списки вакансий. Информация о вакансиях и собеседованиях может быть собрана из многих источников, а затем собрана в одном месте для удобства пользователей.
- Контент социальных сетей. Веб-скрапинг используется для сбора информации с веб-сайтов социальных сетей, таких как Twitter, чтобы определить, что в тренде.
- Сравнение цен. Для сравнения цен на товары также можно использовать парсинг веб-сайтов. Это может быть очень удобно для людей, которые любят сравнивать цены на разных веб-сайтах, или для компаний, которые хотят оценить цены своих конкурентов.
- Исследования и разработки. Поскольку веб-скрапинг может использоваться для сбора значительного объема данных, это популярный метод сбора данных для исследований и разработок.
Разница в MLOps? Наглядность, воспроизводимость и сотрудничество. Узнайте больше о создании эффективных команд машинного обучения из нашей бесплатной электронной книги.
Как работают парсеры
При выполнении кода парсинга веб-страниц выполняется запрос на указанный URL-адрес (универсальный указатель ресурсов). Сервер передает информацию в ответ на запрос, что позволяет нам читать страницу HTML или XML. После синтаксического анализа страницы HTML или XML код извлекает данные.
Пример парсинга веб-страниц: парсинг криптовалютного веб-сайта
Перед запуском убедитесь, что у вас установлены следующие предварительные компоненты:
- Python 2.x или Python 3.x
- Селен
- КрасивыйСуп
- панды
Если вы хотите следовать этому руководству, мы будем использовать следующий URL-адрес:
Во-первых, давайте проведем быстрый визуальный осмотр HTML-кода веб-сайта. Просто щелкните правой кнопкой мыши в любом месте веб-сайта и выберите «Проверить», чтобы просмотреть страницу в режиме разработчика:
Создание парсера
Шаг 1. Сначала нам нужно импортировать все необходимые библиотеки, необходимые для парсинга. Selenium и BeautifulSoup очень хорошо работают вместе. Selenium — это инструмент с открытым исходным кодом, который автоматизирует веб-браузеры. Он предоставляет единый интерфейс, который позволяет вам писать тестовые сценарии на таких языках программирования, как Ruby, Java, NodeJS, PHP, Perl, Python и C#, среди прочих.
Чтобы просто расширить функциональность наших скриптов для отправки запросов HTTP/1.1, мы также должны установить пакет Requests
для Python.
Примечание. Selenium — это библиотека Python и инструмент, используемый для автоматизации веб-браузеров для выполнения ряда задач.
Шаг 2. Выполнение запроса к целевому веб-сайту и получение ответа. Если сервер возвращает ответ с status_code
вместо 200
, мы сделали правильный запрос и получили ответ. Мы сохраняем этот ответ в переменной. Мы также вызываем ошибку, если мы не получим ответ:
Шаг 3. Извлечение необходимой информации и ее сохранение. Для этого конкретного веб-сайта мы сначала найдем все монеты, перечисленные в таблице монет, а затем для каждой строки извлечем name
, price
, change_1h
. , change_24h
, change_7d
, market_cap
и т. д. Обратите внимание, что эта информация содержится в теге <tr>
, а значение каждой из этих переменных содержится в тегах <td>
.
Мы также создаем массив, в котором будет храниться приведенная выше информация для каждой монеты:
Затем функция возвращает все добавленные данные. Ниже мы выполняем наш запрос и применяем нашу функцию с помощью BeautifulSoup:
Шаг 4.Для предварительного просмотра информации мы можем использовать простой цикл for
, чтобы вывести ее построчно:
Шаг 5.Наконец, чтобы сохранить эти данные в формате JSON, мы используем библиотеку json
:
Проблемы с веб-скрейперами
Хотя это может показаться простым, есть несколько проблем, связанных с парсингом веб-страниц. Поскольку каждый веб-сайт имеет свою собственную структуру, мы должны проверять и проверять, как мы будем очищать каждый отдельный веб-сайт, просматривая его HTML-контент. Это может стать очень трудоемкой работой для пользователя и предполагает, что веб-парсер для одного веб-сайта не обязательно будет работать для другого веб-сайта (если только у них нет чрезвычайно сопоставимого материала или наш веб-парсер не использует очень сложную эвристику).
Долговечность парсера также является серьезной проблемой. Хотя сегодня ваш парсер может быть безупречным, в будущем он может внезапно выйти из строя, если веб-сайт, с которого вы собираете данные, изменит свой макет или стиль. Поэтому, чтобы поддерживать работу вашего скребка, вам также необходимо часто его обслуживать. Также парсеры могут столкнуться с дополнительными проблемами при работе с динамическими сайтами. Но даже со всеми этими проблемами парсеры по-прежнему остаются одним из лучших способов извлечения данных с веб-страниц при правильном использовании.
Таким образом, в этой статье мы узнали о парсерах, их применении, некоторых трудностях и о том, как использовать библиотеку Beautiful Soup. Спасибо за прочтение!
Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.
Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.