Как закодировать парсер с помощью Requests и Beautiful Soup

Что такое парсер?

«Веб-скрейпер», также называемый «веб-сборщиком» или «веб-извлекателем данных», представляет собой программу, которая собирает и извлекает («извлекает») информацию из Интернета. Получение контента с длинной страницы или нескольких страниц веб-информации можно рассматривать как простой тип веб-скрапинга. Одним из преимуществ парсинга веб-страниц является то, что он позволяет нам находить актуальную и полезную информацию и сохранять ее для последующего использования в автоматическом режиме.

Фундаментальная концепция парсинга веб-страниц заключается в том, что мы берем уже существующие данные HTML, идентифицируем их с помощью парсера и преобразуем в более удобный формат. Как правило, цель состоит в том, чтобы хранить эти данные в формате JSON, CSV, pandas DataFrame или в каком-либо другом формате, подходящем для преобразования данных и манипулирования ими.

Веб-скрейперы имеют множество практических применений, в том числе:

  • Сбор адресов электронной почты. Веб-скрапинг — обычная практика среди предприятий, использующих массовую рассылку по электронной почте в качестве маркетингового инструмента. Например, веб-скрапинг иногда используется для сбора контактной информации с платформ социальных сетей.
  • Списки вакансий. Информация о вакансиях и собеседованиях может быть собрана из многих источников, а затем собрана в одном месте для удобства пользователей.
  • Контент социальных сетей. Веб-скрапинг используется для сбора информации с веб-сайтов социальных сетей, таких как Twitter, чтобы определить, что в тренде.
  • Сравнение цен. Для сравнения цен на товары также можно использовать парсинг веб-сайтов. Это может быть очень удобно для людей, которые любят сравнивать цены на разных веб-сайтах, или для компаний, которые хотят оценить цены своих конкурентов.
  • Исследования и разработки. Поскольку веб-скрапинг может использоваться для сбора значительного объема данных, это популярный метод сбора данных для исследований и разработок.

Разница в MLOps? Наглядность, воспроизводимость и сотрудничество. Узнайте больше о создании эффективных команд машинного обучения из нашей бесплатной электронной книги.

Как работают парсеры

При выполнении кода парсинга веб-страниц выполняется запрос на указанный URL-адрес (универсальный указатель ресурсов). Сервер передает информацию в ответ на запрос, что позволяет нам читать страницу HTML или XML. После синтаксического анализа страницы HTML или XML код извлекает данные.

Пример парсинга веб-страниц: парсинг криптовалютного веб-сайта

Перед запуском убедитесь, что у вас установлены следующие предварительные компоненты:

  • Python 2.x или Python 3.x
  • Селен
  • КрасивыйСуп
  • панды

Если вы хотите следовать этому руководству, мы будем использовать следующий URL-адрес:

https://www.coingecko.com

Во-первых, давайте проведем быстрый визуальный осмотр 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, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.