Программа на Python для парсинга содержимого сайта

Программа на Python для парсинга сайтов скачивает HTML и извлекает выбранные элементы. BeautifulSoup превращает разметку в дерево тегов, атрибутов, текста и ссылок, пригодное для поиска. Рабочий процесс: запрос, валидация, парсинг, выборка и сохранение. В web.run Python выполняется через Pyodide, поэтому сетевая активность и загруженные пакеты также отображаются в Run Details.

Пример Программы на Python Для Парсинга HTML Сайта

Вывод:

Результат появится здесь...

Вывод:

Title: Header
Links found: 9

Как Работает Этот Пример

  1. pyfetch отправляет асинхронный запрос, поэтому программа использует await на верхнем уровне.
  2. Проверка статуса не даёт страницам с ошибками парситься как целевой документ.
  3. response.string() читает тело ответа, которое BeautifulSoup парсит с помощью html.parser.
  4. find("h1") возвращает первый заголовок, а find_all("a") — все ссылки.

Просмотр Скрапера в Run Details

Откройте Run Details после завершения программы. Он разделяет запрос страницы скрапером и активность пакетов, необходимых для выполнения кода.

Сигнал Run DetailsЧто это означает
Requests показывает GET на raw.githubusercontent.comСкрапер попытался загрузить HTML-файл
Статус запроса 200Браузер успешно получил страницу
Запрос завершился ошибкой или заблокированПроверьте соединение и поддержку кросс-доменных запросов из браузера у сайта
Packages показывает beautifulsoup4web.run обнаружил импорт bs4 и загрузил поддерживаемый пакет
Статус 200, но извлечённые значения отсутствуютСеть работает; проверьте HTML и селекторы

Длительность рядом с запросом измеряет время загрузки страницы, а общая длительность включает также загрузку пакета, парсинг и выполнение Python. BeautifulSoup обычно загружается при первом запуске и остаётся доступной в текущем рантайме, поэтому последующие запуски выполняются быстрее и могут не показывать активность пакетов.

Как Парсить Сайт на Python

  1. Выберите страницу, которая разрешает автоматический доступ и запросы из браузера.
  2. Загрузите HTML и отклоняйте HTTP-статусы, не являющиеся успешными, до начала парсинга.
  3. Создайте один объект BeautifulSoup из тела ответа.
  4. Изучите разметку и выбирайте элементы по семантическому тегу, атрибуту или CSS-селектору.
  5. Нормализуйте извлечённый текст и приводите относительные URL к абсолютным перед сохранением результатов.

Больше Примеров Python BeautifulSoup

Извлечение всех заголовков секций

Используйте один CSS-селектор для сбора нескольких уровней заголовков:

for heading in soup.select("h2, h3"):
    print(heading.get_text(" ", strip=True))

Разделитель сохраняет пробелы между текстом вложенных тегов, а strip=True удаляет окружающие пробелы.

Извлечение и нормализация ссылок

Приводите абсолютные, относительные и фрагментные ссылки к URL страницы:

from urllib.parse import urljoin

for link in soup.select("a[href]"):
    print(urljoin(url, link["href"]))

Селектор [href] исключает якоря без назначения, делая доступ к атрибуту безопасным.

Выбор Селекторов BeautifulSoup

ЗадачаСелекторРезультат
Первый заголовок страницыsoup.find("h1")Один тег или None
Все ссылкиsoup.find_all("a")Список тегов
Ссылки с назначениемsoup.select("a[href]")Теги по CSS-селектору
Элементы внутри статьиsoup.select("article .item")Только совпадающие потомки

Используйте find, когда ожидается один элемент, find_all для коллекции по тегу и select, когда отношения или атрибуты делают CSS-селектор понятнее.

Ошибки При Парсинге Сайтов на Python

  1. Не каждый URL доступен. Pyodide работает в браузере, поэтому страница может открываться во вкладке, но отклонять кросс-доменный запрос из web.run.
  2. Отсутствующие элементы требуют явной проверки. BeautifulSoup возвращает None, когда селектор не находит совпадений; немедленное обращение к тексту вызовет ошибку.
  3. Контент, генерируемый JavaScript, отсутствует в скачанном HTML. BeautifulSoup парсит ответ сервера, но не выполняет скрипты; изучайте тело ответа, если селектор не возвращает совпадений.

Соблюдайте правила сканирования, ограничивайте частоту запросов, кешируйте неизменившиеся страницы и уменьшайте нагрузку при ответе сервера «слишком много запросов».

Для управляющих конструкций вокруг кода см. Обработка исключений в Python и Условные проверки в Python.

FAQ

Какая библиотека Python используется для веб-парсинга?

BeautifulSoup парсит и запрашивает скачанный HTML. Сетевой клиент, например pyfetch, загружает документ, а BeautifulSoup выбирает элементы по тегу, атрибуту или CSS-селектору.

Может ли BeautifulSoup парсить JavaScript-сайты?

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