Важное предупреждение !!!
Данная статья носит исключительно информационный и образовательный характер. Она не является юридической консультацией и не может использоваться как руководство к действию в вопросах, связанных с парсингом, сбором данных и соблюдением законодательства.
Все примеры и рекомендации приведены для ознакомления с технической стороной процесса. Решение о законности парсинга в каждом конкретном случае зависит от множества факторов: юрисдикции, содержания сайта, способа сбора данных и целей использования информации. Для получения юридически обоснованного ответа обращайтесь к квалифицированным специалистам.
Перед началом прочтения статьи, ОБЯЗАТЕЛЬНО ознакомтесь со статьей «Что такое парсинг сайтов: законно ли это?«
Автор и администрация сайта не несут ответственности за использование материалов данной статьи в коммерческих или иных целях, а также за любые последствия, связанные с применением описанных методов.
Привет! В прошлой статье мы разобрались с юридической стороной парсинга. Теперь переходим к практике. Сегодня мы установим BeautifulSoup — самую популярную библиотеку для парсинга HTML в Python — и напишем наш первый парсер.
В этой статье мы разберём:
- Установку BeautifulSoup и requests
- Первый HTML-парсер
- Базовые методы поиска элементов
- Что нужно знать перед началом
- Основная часть
- Установка BeautifulSoup
- Установка парсера
- Установка requests
- Проверка установки
- Первый парсер
- Парсинг сайта через requests
- Основные методы BeautifulSoup
- Задачи для закрепления
- Нюансы и подводные камни
- Ошибка при установке
- Ошибка ModuleNotFoundError
- Проблемы с кодировкой
- Частые ошибки и как их избежать
- Ошибка 1: Неправильное имя пакета
- Ошибка 2: Забыл установить requests
- Ошибка 3: Неправильный парсер
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python 3.x
- Базовое понимание работы с терминалом
Совет: Убедись, что Python установлен корректно. Команда
python --versionдолжна показывать версию 3.x
Основная часть
Установка BeautifulSoup
BeautifulSoup распространяется через PyPI — официальный репозиторий пакетов Python. Установка выполняется командой:
pip install beautifulsoup4Важно: Обрати внимание на название — именно
beautifulsoup4, а неbeautifulsoup. Пакетbeautifulsoup— это устаревшая третья версия, которая больше не поддерживается
Совет: Если команда
pipне работает, попробуйpython -m pip install beautifulsoup4
Установка парсера
BeautifulSoup умеет парсить HTML, но сам этого не делает — он использует внешние парсеры. Рекомендуется установить lxml — он быстрее и мощнее, чем встроенный html.parser
pip install lxmlЕсли lxml не устанавливается, можно использовать встроенный html.parser. Он работает медленнее, но не требует дополнительной установки.
Установка requests
Для парсинга реальных сайтов понадобится библиотека requests — она отправляет HTTP-запросы и получает HTML-код страниц.
pip install requestsПроверка установки
Открой терминал или командную строку и проверь:
python -c "from bs4 import BeautifulSoup; print('OK')"Если видишь OK — всё работает.
Первый парсер
Создай файл first_parser.py в удобной папке. Начнём с парсинга HTML-файла.
Шаг 1. Создай HTML-файл
Создай файл page.html с таким содержимым
<!DOCTYPE html>
<html>
<head>
<title>Моя первая страница</title>
</head>
<body>
<h1>Добро пожаловать!</h1>
<p class="intro">Это мой первый HTML-документ.</p>
<div class="content">
<p>Здесь находится основной текст страницы.</p>
<p class="highlight">Этот абзац выделен особым классом.</p>
</div>
</body>
</html>Шаг 2. Напиши парсер
[code]
from bs4 import BeautifulSoup
# Открываем HTML-файл
with open("page.html", "r", encoding="utf-8") as file:
html_content = file.read()
# Создаём объект BeautifulSoup
soup = BeautifulSoup(html_content, "html.parser")
# Выводим заголовок страницы
print(soup.title.text) # Моя первая страница
# Выводим содержимое тега h1
print(soup.h1.text) # Добро пожаловать!
# Находим первый абзац с классом intro
intro = soup.find("p", class_="intro")
print(intro.text) # Это мой первый HTML-документ.
# Находим все абзацы
paragraphs = soup.find_all("p")
for p in paragraphs:
print(p.text)Результат:
Моя первая страница
Добро пожаловать!
Это мой первый HTML-документ.
Здесь находится основной текст страницы.
Этот абзац выделен особым классом.Парсинг сайта через requests
Теперь давай получим HTML прямо из интернета.
import requests
from bs4 import BeautifulSoup
# Отправляем GET-запрос
url = "https://сайт.com"
response = requests.get(url)
# Проверяем статус ответа
if response.status_code == 200:
# Создаём объект BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
# Выводим заголовок страницы
print("Заголовок:", soup.title.text)
# Выводим первый параграф
first_p = soup.find("p")
if first_p:
print("Первый параграф:", first_p.text)
else:
print(f"Ошибка: {response.status_code}")Совет: Всегда проверяй
status_code— 200 означает успешный запрос
Основные методы BeautifulSoup
Задачи для закрепления
Задача 1. Установи BeautifulSoup и requests на свой компьютер. Проверь установку командой из пункта 2.4.
Задача 2. Создай HTML-файл с несколькими абзацами и одним заголовком. Напиши парсер, который выводит заголовок и все абзацы.
Задача 3. Отправь GET-запрос на https://example.com и выведи все ссылки (<a>) на странице.
Задача 4. Что выведет soup.find("p", class_="intro")?
Задача 5. В чём разница между find() и find_all()?
Ответы:
Задача 2.
from bs4 import BeautifulSoup
with open("page.html", "r", encoding="utf-8") as file:
soup = BeautifulSoup(file.read(), "html.parser")
print(soup.h1.text)
for p in soup.find_all("p"):
print(p.text)Задача 3.
import requests
from bs4 import BeautifulSoup
response = requests.get("https://сайт.com")
soup = BeautifulSoup(response.text, "html.parser")
links = soup.find_all("a")
for link in links:
print(link.get("href"))Задача 4.
# Первый абзац с классом "intro"Задача 5.
# find() возвращает один элемент (первый), find_all() — список всех элементовНюансы и подводные камни
Ошибка при установке
Если pip install beautifulsoup4 выдаёт ошибку, попробуй использовать зеркало
pip install beautifulsoup4 lxml -i https://pypi.tuna.tsinghua.edu.cn/simpleОшибка ModuleNotFoundError
Если Python не видит библиотеку, проверь, что она установлена в том же окружении, где ты запускаешь скрипт.
Проблемы с кодировкой
При чтении файлов всегда указывай encoding="utf-8", иначе могут быть проблемы с русскими буквами.
Частые ошибки и как их избежать
Ошибка 1: Неправильное имя пакета
❌ pip install beautifulsoup — устанавливает старую версию BS3
✅ pip install beautifulsoup4 — правильная версия
Ошибка 2: Забыл установить requests
Всегда устанавливай requests, если собираешься парсить сайты
Ошибка 3: Неправильный парсер
Используй "html.parser" или "lxml"
Шпаргалка
| Что нужно | Как пишется |
|---|---|
| Установить BeautifulSoup | pip install beautifulsoup4 |
| Установить lxml | pip install lxml |
| Установить requests | pip install requests |
| Импортировать | from bs4 import BeautifulSoup |
| Создать объект | soup = BeautifulSoup(html, "html.parser") |
| Найти элемент | soup.find("tag", class_="name") |
| Найти все элементы | soup.find_all("tag") |
Заключение / Выводы
Сегодня мы:
- Установили BeautifulSoup и lxml
- Установили requests для запросов к сайтам
- Написали первый парсер для HTML-файла
- Научились использовать
find()иfind_all()








