Установка BeautifulSoup и первый парсер

Установка BeautifulSoup и первый парсер Парсинг (BeautifulSoup, Selenium)

Важное предупреждение !!!

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

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

Перед началом прочтения статьи, ОБЯЗАТЕЛЬНО ознакомтесь со статьей «Что такое парсинг сайтов: законно ли это?«

Автор и администрация сайта не несут ответственности за использование материалов данной статьи в коммерческих или иных целях, а также за любые последствия, связанные с применением описанных методов.

Привет! В прошлой статье мы разобрались с юридической стороной парсинга. Теперь переходим к практике. Сегодня мы установим BeautifulSoup — самую популярную библиотеку для парсинга HTML в Python — и напишем наш первый парсер.

В этой статье мы разберём:

  • Установку BeautifulSoup и requests
  • Первый HTML-парсер
  • Базовые методы поиска элементов

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный 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

МетодЧто делаетПример
soup.find()Возвращает первый найденный элементsoup.find("p", class_="intro")
soup.find_all()Возвращает список всех элементовsoup.find_all("a")
.textИзвлекает текст из элементаsoup.title.text
.attrsВозвращает атрибуты элементаelement.attrs['src'] 
soup.prettify()Красиво форматирует HTMLsoup.prettify() 

Задачи для закрепления

Задача 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"

Шпаргалка

Что нужноКак пишется
Установить BeautifulSouppip install beautifulsoup4
Установить lxmlpip install lxml
Установить requestspip 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()

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×