JavaRush /Курсы /Python SELF /Извлечение текстов и атрибутов из HTML-элементов с помощь...

Извлечение текстов и атрибутов из HTML-элементов с помощью методов BeautifulSoup

Python SELF
32 уровень , 0 лекция
Открыта

1. Введение в методы извлечения текста

Сегодня мы научимся извлекать драгоценные текстовые данные и атрибуты из HTML—элементов. Отбросьте свои мачете, потому что с BeautifulSoup работу с кодом можно сравнить разве что с походом по осеннему саду, где яблоки так и просят, чтобы их сорвали. Готовы пожать плоды вашего обучения? Тогда начнем!

Методы извлечения текста из HTML-элементов стоят на первом месте в нашем списке. Прежде чем начинать извлекать текст, давайте загрузим страницу.

Python

import requests
from bs4 import BeautifulSoup

# Загружаем HTML-код страницы
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Теперь у нас есть объект soup, который содержит деревьеобразную структуру нашего HTML-документа. Давайте извлечем текст из какого-нибудь тегового элемента, например, заголовка.

Метод .text и get_text()

Свойство .text и его аналог - метод get_text() позволяют получить текстовое содержимое элемента (и всех его вложенных элементов).

Python

# Извлекаем текст из первого найденного заголовка h1
h1_tag = soup.find('h1')
print(h1_tag.text) # или h1_tag.get_text()

Попробуйте сами: найдите другие элементы, используя методы поиска, которые мы изучали в предыдущих лекциях, и извлеките из них текст. Вы удивитесь, сколько информации можно получить!

2. Извлечение значений атрибутов

Тексты текстами, но иногда важные данные спрятаны в атрибутах, как паспорта в карманах. Представьте себе, что вам нужно узнать адрес ссылки или получить URL изображения (и не спрашивайте меня, зачем это может понадобиться; вдруг вам захочется собирать коллекцию изображений котиков).

Извлечение значений атрибутов

Допустим, у нас есть элемент ссылки <a href="https://example.com">Example</a>. Как нам получить значение href? Всё просто.

Python

# Извлекаем ссылку
a_tag = soup.find('a')
link = a_tag['href']
print("Ссылка:", link)

Этот код извлек значение атрибута href. Любые другие полезные атрибуты, вы сможете извлечь их аналогичным образом.

Пытаемся вытащить изображение

Извлечение URL изображения может быть столь же простым. Рассмотрим случай с <img src="image.jpg" alt="Котик">.

Python

# Извлекаем URL изображения
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL изображения:", image_url)

Красота работы с BeautifulSoup в том, что он позволяет легко находить и извлекать данные, не заставляя при этом нас думать о том, как именно работает HTML-структура.

3. Примеры извлечения текста и атрибутов

Пора перейти к примерам. Давайте рассмотрим возьмем чуть более сложную задачу: извлечем все ссылки на странице, вместе с текстом внутри тегов <a>.

Пример: извлечение всех ссылок с текстом

Python

# Находим все теги a
a_tags = soup.find_all('a')

# Выводим ссылку и текст
for a_tag in a_tags:
 link = a_tag['href']
 text = a_tag.get_text()
 print(f"Текст: {text}, Ссылка: {link}")

Как видите, метод find_all удобно находит все элементы, удовлетворяющие условиям поиска, а for-цикл позволяет обойти каждый из них.

4. Обработка ошибок

Не забывайте обрабатывать ошибки. Иногда HTML-структура может быть не такой, как вы ожидаете, или элемент может не иметь ожидаемого атрибута. Позаботьтесь о том, чтобы ваш код не "падал" на таких моментах.

Python

# Пример обработки ошибок при извлечении атрибута
try:
 link = a_tag['href']
except KeyError:
 link = None
 print("Атрибут href не найден!")

Это позволит сделать скрипт более устойчивым, и он не остановится из-за одной неявной ошибки.

5. Реальное применение

В 2019 году российский предприниматель поделился историей о том, как его компания, специализирующаяся на парсинге данных, достигла оборота в 20 миллионов рублей в год. Он отметил, что автоматизированный сбор информации не ограничивает конкуренцию, а, напротив, помогает бизнесам адаптироваться к рынку.

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

Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
11 сентября 2025
Нафига столько тем и времени посвятили этому парсингу??? Лучше бы больше времени уделили и подробнее разобрали графические интерфейсы, построение графиков, работе с файлами в созданном графическом интерфейсе и т.д.
Slevin Уровень 64
25 июля 2025
Повтор лекции...