Синтаксический анализ XML и HTML

sintaksicheskij analiz xml i html Текст и язык

Помимо объектов строк и регулярных выражений в Python имеется поддержка синтаксического анализа некоторых специфических и часто используемых типов форматированного текста. В частности, в Python имеются готовые механизмы синтаксического анализа для XML и HTML, которые можно использовать и адаптировать для решения наших собственных задач обработки текста.

Что касается XML, в состав стандартной библиотеки Python включена поддержка анализа этого формата, а в самом проекте Python имеется отдельная группа разработчиков, занимающаяся проблемами XML. XML (eXtensible Markup Language — расширяемый язык разметки) — это язык разметки, основанный на тегах, предназначенный для описания структурированных данных самых разных типов. Помимо всего прочего он играет роль стандартной базы данных и представления содержимого во многих контекстах. Будучи объектно-ориентированным языком сценариев, Python прекрасно подходит для реализации основного назначения XML — обмена структурированными документами.

Язык XML основан на синтаксисе тегов, знакомом разработчикам вебстраниц, и используется для описания и упаковывания данных. Пакет xml, входящий в состав стандартной библиотеки Python, включает инструменты ана ли за данных в документах XML, основанные на обеих стандартных моделях, SAX и DOM, синтаксического анализа, а также специфический для Python пакет ElementTree. Несмотря на то, что иногда для извлечения информации из документов XML также можно использовать регулярные выражения, тем не менее, они легко могут давать неверные результаты из-за наличия неожиданного текста и не имеют прямой поддержки произвольно вложенных конструкций языка XML (подробнее об этом ограничении будет рассказываться ниже, когда мы приступим к теме синтаксического анализа языков в целом).

В двух словах, реализация модели SAX предоставляет возможность создавать свои подклассы с методами, которые будут вызываться в процессе синтаксического анализа, а реализация модели DOM обеспечивает доступ к дереву объектов, представляющему (обычно) уже проанализированный документ. Парсеры SAX по сути являются конечными автоматами и в процессе анализа должны сохранять (возможно, на стеке) данные, полученные в процессе анализа. Парсеры DOM выполняют обход деревьев объектов, используя циклы, атрибуты и методы, определяемые стандартом DOM. Модель ElementTree является примерным аналогом DOM и позволяет писать более простой программный код. Она также может использоваться для генерации текста в формате XML из объектного представления.

Помимо этих инструментов синтаксического анализа в Python также имеется пакет xmlrpc поддержки протокола XML-RPC (протокол вызова удаленных процедур, который передает объекты, представленные в формате XML, по протоколу HTTP) на стороне клиента и сервера, а также стандартный парсер HTML, html.parser, который действует похожим образом и будет представлен далее в этой главе. Сторонние модули также предлагают множество инструментов для обработки документов XML. Большинство из них функционирует независимо от Python, что обеспечивает большую гибкость выпуска новых версий. Начиная с версии Python 2.3, в качестве основного механизма, управляющего синтаксическим анализом, стал использоваться парсер Expat.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий