Узнайте, как использовать Beautiful Soup для парсинга страниц с помощью Python за 3 минуты

Ищете краткое руководство, чтобы начать парсинг веб-страниц с помощью Python’s Beautiful Soup? Вы пришли по адресу – читайте статью и начните работу.
1 min read
How to Scrape with BeautifulSoup

В этой статье мы обсудим:

Как работает веб-скрапинг?

Веб-скрапинг – это способ получения определенных данных с целевой веб-страницы. Когда вы исследуете страницу, написанный код отправляет запрос на сервер, где она находится. Код загружает ее, извлекая элементы, указанные в задании сканирования.

Допустим, нам нужны целевые данные в тегах заголовка H3. Мы напишем код для парсера, который будет искать именно эту информацию. Он будет работать в три этапа:

Этап 1: Отправка запроса на сервер для загрузки содержимого сайта.
Шаг 2: Изучение HTML страниц для поиска нужных тегов H3.
Шаг 3: Копирование текста внутри целевых тегов, создание выходных данных в формате, указанном ранее в коде.

Задачи веб-скрапинга можно выполнять на многих языках программирования с помощью различных библиотек, но именно библиотека Beautiful Soup в Python – наиболее востребованный и эффективный метод. Ниже мы рассмотрим основы парсинга на Python с Beautiful Soup.

Что такое Beautiful Soup?

Beautiful Soup является библиотекой Python, которая анализирует документы HTML и XML. Она создает дерево разбора для проанализированных страниц, которое позволяет извлекать данные из HTML. Кроме того, автоматически преобразует документ в Юникод. Поэтому вам не придется думать о кодировках. Этот инструмент помогает не только парсить, но и очищать данные. Beautiful Soup поддерживает парсер HTML библиотеки Python и несколько сторонних: lxml или hml5lib.

Подробнее о возможностях читайте здесь: Документация по Beautiful Soup.

Как установить Requests и Beautiful Soup

Вам нужен pip или другой установщик Python. По желанию можете использовать свою лабораторию jupyter. В этой статье мы используем pip, так как он более удобный. Откройте терминал или Jupyter Lab и напишите:
command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

Вы также можете установить парсер, который интерпретирует HTML, например, «html5lib». Для этого запустите в терминале код:command line for installing html5lib using pip install for Python

Установка Requestsscreenshot of syntax for pip install requests for python

Еще один способ – загрузить библиотеки вручную, перейдя по ссылке:

1: Requests

2: Hml5lib

3: Beautifulsoup4

Шаги для парсинга на Python с Requests и Beautiful Soup

Шаг 1: Вам нужно отправить HTTP-запрос на сервер страницы для парсинга. В ответ сервер отправит ее HTML-контент. Так как для запросов мы используем Python, нам нужна сторонняя HTTP-библиотека. Мы будем использовать Requests.

Начните с импорта библиотеки Requests и сделайте простой GET-запрос к URL. Мы выбрали https://www.brainyquote.com/topics/motivational-quotes, потому что он имеет простую структуру HTML и позволит легко продемонстрировать потенциал Beautiful Soup.

Если вы получаете ответ [200], это означает, что сайт ответил кодом ответа HTTP 200 OK и отправил нам HTML-содержимое страницы.

Давайте снова сделаем тот же запрос, но на этот раз сохраним результат в переменной с именем r и выведем его содержимое.
scraping using requests and saving the URL as a variable called r

На выходе должен быть весь HTML-код для этой страницы. Как видите, он не структурирован и Beautiful Soup поможет нам очистить его и получить нужные данные.

Шаг 2: Теперь, когда у нас есть HTML-контент, нам нужно проанализировать данные. Для этого мы будем использовать Beautiful Soup с парсером html5lib.importing beautiful soup from bs4 - command line syntaxНам нужно передать два значения в BeautifulSoup():

#1: HTML-строка с сайта; ‘r.content’.
#2: Какой парсер HTML использовать; ‘html5lib’

Шаг 3: На данном этапе нужно перейти на сайт, с которого собираете информацию. Откройте Devtools (F12) и перейдите на вкладку Elements. Нам нужен верхний слой таблицы.
nice chunk of scraped data using beautiful soup

command line syntax for configuring a table in beautiful soup using python

Давайте распечатаем таблицу, чтобы получить лучшее представление о том, что у нас есть, и воспользуемся .prettify().

command line for displaying the table in the console using prettify

Ваш вывод должен выглядеть примерно так:

Теперь ищем нужные вам данные. Для данного примера нам нужна только цитата и имя автора. Как видите, все эти данные находятся по адресу

Давайте пройдемся по всем экземплярам класса и получим цитаты в нашей таблице.
command line for looping through all the data to find the rows you need for the table

Теперь вам должны быть доступны только
в каждом экземпляре цикла. Вы можете проверить это, выполнив print(row) в цикле.

finding the alt-text inside the scraped data

Мы ищем информацию под ключом “img alt”, поэтому давайте создадим переменную quote и присвоим ей эти данные.

assigning data to the alt text

Как вы видите, я завернул его в оператор ‘try’. В этом случае, если в одной из строк не будет искомых данных, вы не получите ошибку, и цикл будет продолжен. Я также разделил результаты на ‘-‘. Как вы видели ранее, текст и имя автора разделяются с помощью знака ‘-‘ Давайте используем его, чтобы разделить эти два знака.
example of alt-attribute text being filled with the data providedВот и все, вы закончили. Вот как теперь должна выглядеть ваша цитата:

 

example of the data after it has applied the alt-text scrape

В конце этого процесса вы можете сохранить свои данные в файл, и ваш код должен выглядеть примерно так:
Screen shot of the final Python code and how it should look