Программа на Python для парсинга содержимого сайта
Программа на Python для парсинга сайтов скачивает HTML и извлекает выбранные элементы. BeautifulSoup превращает разметку в дерево тегов, атрибутов, текста и ссылок, пригодное для поиска. Рабочий процесс: запрос, валидация, парсинг, выборка и сохранение. В web.run Python выполняется через Pyodide, поэтому сетевая активность и загруженные пакеты также отображаются в Run Details.
Пример Программы на Python Для Парсинга HTML Сайта
Вывод:
Результат появится здесь...
Вывод:
Title: Header
Links found: 9
Как Работает Этот Пример
pyfetchотправляет асинхронный запрос, поэтому программа используетawaitна верхнем уровне.- Проверка статуса не даёт страницам с ошибками парситься как целевой документ.
response.string()читает тело ответа, которое BeautifulSoup парсит с помощьюhtml.parser.find("h1")возвращает первый заголовок, аfind_all("a")— все ссылки.
Просмотр Скрапера в Run Details
Откройте Run Details после завершения программы. Он разделяет запрос страницы скрапером и активность пакетов, необходимых для выполнения кода.
| Сигнал Run Details | Что это означает |
|---|---|
| Requests показывает GET на raw.githubusercontent.com | Скрапер попытался загрузить HTML-файл |
| Статус запроса 200 | Браузер успешно получил страницу |
| Запрос завершился ошибкой или заблокирован | Проверьте соединение и поддержку кросс-доменных запросов из браузера у сайта |
| Packages показывает beautifulsoup4 | web.run обнаружил импорт bs4 и загрузил поддерживаемый пакет |
| Статус 200, но извлечённые значения отсутствуют | Сеть работает; проверьте HTML и селекторы |
Длительность рядом с запросом измеряет время загрузки страницы, а общая длительность включает также загрузку пакета, парсинг и выполнение Python. BeautifulSoup обычно загружается при первом запуске и остаётся доступной в текущем рантайме, поэтому последующие запуски выполняются быстрее и могут не показывать активность пакетов.
Как Парсить Сайт на Python
- Выберите страницу, которая разрешает автоматический доступ и запросы из браузера.
- Загрузите HTML и отклоняйте HTTP-статусы, не являющиеся успешными, до начала парсинга.
- Создайте один объект BeautifulSoup из тела ответа.
- Изучите разметку и выбирайте элементы по семантическому тегу, атрибуту или CSS-селектору.
- Нормализуйте извлечённый текст и приводите относительные 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
- Не каждый URL доступен. Pyodide работает в браузере, поэтому страница может открываться во вкладке, но отклонять кросс-доменный запрос из web.run.
- Отсутствующие элементы требуют явной проверки. BeautifulSoup возвращает
None, когда селектор не находит совпадений; немедленное обращение к тексту вызовет ошибку. - Контент, генерируемый JavaScript, отсутствует в скачанном HTML. BeautifulSoup парсит ответ сервера, но не выполняет скрипты; изучайте тело ответа, если селектор не возвращает совпадений.
Соблюдайте правила сканирования, ограничивайте частоту запросов, кешируйте неизменившиеся страницы и уменьшайте нагрузку при ответе сервера «слишком много запросов».
Для управляющих конструкций вокруг кода см. Обработка исключений в Python и Условные проверки в Python.
FAQ
Какая библиотека Python используется для веб-парсинга?
BeautifulSoup парсит и запрашивает скачанный HTML. Сетевой клиент, например pyfetch, загружает документ, а BeautifulSoup выбирает элементы по тегу, атрибуту или CSS-селектору.
Может ли BeautifulSoup парсить JavaScript-сайты?
BeautifulSoup парсит HTML, полученный от сервера, но не запускает JavaScript. Элементы, созданные только после выполнения скриптов, не появятся в разобранном документе.