Основы�программирования�с Beautifulsoup4
Требования
Введение
Зачем нужен bs4
Сферы применения веб-парсинга сегодня охватывает все области современного бизнеса.
Помимо этого библиотеку bs4 можно применять и повседневности, не используя парсинг огромных веб-страниц, а писать собственные мини-скрипты или приложения.
Установка Beautifulsoup4
VS Code�В терминале пропишите команду�pip install beautifulsoup4�pip install requests
Python IDLE�Нажмите сочетание клавиш Win+R и напишите cmd�Пропишите �pip install beautifulsoup4�pip install requests
Принцип работы
DOM-Дерево
Основной код
Код с запросом web-страницы
Код с ручным заданием HTML-кода
Базовый поиск по тегам
Представим, что у нас есть следующий HTML-код:
<html> � <body> � <h1>Заголовок</h1>� <p>Первый абзац.</p>� <p>Второй абзац.</p>� </body>�</html>
Вид в браузере
Базовый поиск по тегам
Важно
Работа с атрибутами
Bs4 позволяет работать с атрибутами тегов. Например, в коде HTML присутствует гиперссылка
<a href=‘https://example.com’>Ссылка</a>
Тег «a» имеет атрибут «href», который мы можем получить.
Пример:
link = soup.find(“a”)�print(link[“href”])
Помимо href можно производить поиск по другим атрибутам, например id, target, datatype и др.
Работа с атрибутами
На страницах, помимо сплошного текста, присутствуют и изображения. �С помощью библиотеки requests можно сохранять их в виде файла.
Фильтрация результатов
Фильтрация по классу
Представим, что у нас следующий HTML-код:
<html>� <body>� <ul>� <li class=“item”>Элемент 1</li>� <li class=“item”>Элемент 2</li>� <li class=“other”>Элемент 3</li>
</ul>� </body>�</html>
Фильтрация по классу
В данном примере 2 элемента списка имеют класс item, последний – other
Задание
Соберите названия фильмов, которые будут показывать сегодня в выбранном кинотеатре. Выведите их в консоли.
Код программы
Важный момент
Использование User-Agent: В примерах кода используется прямой запрос requests.get(url)
Некоторые современные сайты блокируют запросы без заголовков (headers), так как они выглядят как боты.
Веб-этика
Мы работаем в интернете, потому следует уважать владельцев сайта. Не следует делать частые запросы и проверить разрешения на парсинг конкретного сайта.
Метод select
Bs4 поддерживает метод select, что делает фильтрацию ещё более удобной.
Пример использования:��items = soup.select(‘ul li’)�for item in items:� print(item.text)��Тем самым мы получаем все элементы <li> внутри <ul>
Проверки и debug
Перед тем, как обращаться к элементу, следует проверить, существует ли он
Пример:
element = soup.find(‘div’)�if element:� print(element.text)�else:� print(‘Элемент не найден’)
Также это можно делать с помощью оператор try-except
Другие примеры использования
Спасибо за внимание