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

«Какие основные библиотеки Python используются для парсинга HTML и XML?» — вопрос из категории Библиотеки и модули, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для парсинга HTML и XML в Python существует несколько популярных библиотек, каждая со своими сильными сторонами. 1. **Beautiful Soup (`bs4`)** Идеальна для новичков и для работы с "грязным", некорректным HTML-кодом. Она предоставляет простой Python-идиоматичный интерфейс для навигации, поиска и изменения дерева разбора. *Почему её выбирают:* Простота использования и устойчивость к ошибкам в разметке. ```python from bs4 import BeautifulSoup html_doc = "

Заголовок

Текст

" soup = BeautifulSoup(html_doc, 'html.parser') print(soup.h1.text) # Вывод: Заголовок ``` 2. **lxml** Высокопроизводительная библиотека, написанная на C. Она обеспечивает очень быструю обработку XML и HTML, а также полную поддержку **XPath** и **XSLT**. *Почему её выбирают:* Скорость и мощные возможности запросов через XPath. ```python from lxml import etree html_doc = b"

Заголовок

Текст

" tree = etree.HTML(html_doc) # Используем XPath для поиска элемента h1 header_text = tree.xpath('//h1/text()') print(header_text[0]) # Вывод: Заголовок ``` 3. **Scrapy (фреймворк)** Это не просто библиотека, а полноценный фреймворк для веб-скрейпинга. Он включает в себя инструменты для отправки HTTP-запросов, обработки ответов, парсинга (часто с использованием `lxml` под капотом) и сохранения данных. Построен на `asyncio` для высокой производительности. *Почему его выбирают:* Для масштабных и сложных проектов по сбору данных, требующих асинхронности, управления очередями запросов и обработки ошибок. **Для сайтов с динамическим контентом (JavaScript):** Когда контент страницы генерируется с помощью JavaScript, простые парсеры не справятся. В таких случаях используют инструменты для управления браузером: * **Selenium**: Классический инструмент для автоматизации браузера. * **Playwright**: Более современная и быстрая альтернатива от Microsoft с мощным API. **Итог:** * **Простота и гибкость:** `Beautiful Soup`. * **Скорость и XPath:** `lxml`. * **Масштабные проекты:** `Scrapy`. * **Сайты на JS:** `Selenium` или `Playwright`.