Узнайте, как использовать 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

command line for installing html5lib using pip install for Python
screenshot 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-содержимое страницы.

Getting blocked? Use our next-gen unblocking tech

Давайте снова сделаем тот же запрос, но на этот раз сохраним результат в переменной с именем 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