htmllib — Парсер HTML-документов
Устарело начиная с версии 2.6: Модуль htmllib удалён в Python 3. Используйте HTMLParser в Python 2 и эквивалент, html.parser, в Python 3.
В этом модуле определён класс, который может служить основой для разбора текстовых файлов, форматированных в формате HyperText Mark-up Language (HTML). Класс не связан напрямую с вводом-выводом — ему необходимо предоставить входные данные в виде строки через метод, а для вывода он делает вызовы методов объекта «форматера». Класс HTMLParser предназначен для использования в качестве базового класса для других классов с целью добавления функциональности, и позволяет расширять или переопределять большинство его методов. В свою очередь, этот класс является производным от и расширяет класс SGMLParser , определённый в модуле sgmllib. Реализация HTMLParser поддерживает язык HTML 2.0, как описано в RFC 1866. Два варианта реализации объектов форматирования предоставляются в модуле formatter; информацию об интерфейсе форматирования см. в документации по этому модулю.
Ниже приведено краткое описание интерфейса, определённого классом sgmllib.SGMLParser:
-
Интерфейс для подачи данных экземпляру реализован через метод
feed(), принимающий строковый аргумент. Его можно вызывать с любым желаемым количеством текста;p.feed(a); p.feed(b)имеет тот же эффект, что иp.feed(a+b). Когда данные содержат полные конструкции разметки HTML, они обрабатываются немедленно; неполные конструкции сохраняются в буфере. Чтобы принудительно обработать все необработанные данные, вызовите методclose().Например, для разбора всего содержимого файла используйте:
parser.feed(open('myfile.html').read()) parser.close() - Интерфейс для определения семантики HTML-тегов очень прост: нужно создать производный класс и определить методы, называемые
start_tag(),end_tag(), илиdo_tag(). Парсер вызовет их в соответствующие моменты:start_tag()илиdo_tag()вызывается при встрече открывающего тега вида<tag ...>;end_tag()вызывается при встрече закрывающего тега вида<tag>. Если открывающий тег требует соответствующего закрывающего тега, как<H1>…</H1>, класс должен определить методstart_tag(); если тег не требует закрывающего тега, как<P>, класс должен определить методdo_tag().
Модуль определяет класс парсера и исключение:
-
class htmllib.HTMLParser(formatter) -
Это базовый класс HTML-парсера. Он поддерживает все имена сущностей, необходимые для рекомендации XHTML 1.0 (https://www.w3.org/TR/xhtml1). Он также определяет обработчики для всех элементов HTML 2.0 и многих элементов HTML 3.0 и 3.2.
-
exception htmllib.HTMLParseError -
Исключение, генерируемое классом
HTMLParser, когда он сталкивается с ошибкой во время разбора.Введено в версии 2.4.
См. также
-
Moduleformatter -
Определение интерфейса для преобразования абстрактного потока событий форматирования в конкретные события вывода для объектов-писателей.
-
ModuleHTMLParser -
Альтернативный HTML-парсер, предоставляющий несколько более низкоуровневый вид входных данных, но предназначен для работы с XHTML и не реализует некоторые конструкции синтаксиса SGML, не используемые в «развёрнутом HTML» и не являющиеся допустимыми для XHTML.
-
Modulehtmlentitydefs -
Определение замены текста для сущностей XHTML 1.0.
-
Modulesgmllib -
Базовый класс для
HTMLParser.
1. Объекты HTMLParser
В дополнение к методам для тегов, класс HTMLParser предоставляет дополнительные методы и переменные экземпляра для использования внутри методов для тегов.
-
HTMLParser.formatter -
Это экземпляр форматирования, связанный с парсером.
-
HTMLParser.nofill -
Флаг булевого типа, который должен быть истинным, когда пробелы не должны сжиматься, или ложным, когда они должны сжиматься. В общем случае, он должен быть истинным только тогда, когда символьные данные должны рассматриваться как форматированный текст, как в элементе
<PRE>. Значение по умолчанию — ложь. Это влияет на работуhandle_data()иsave_end().
-
HTMLParser.anchor_bgn(href, name, type) -
Этот метод вызывается в начале области якоря. Аргументы соответствуют атрибутам тега
<A>с теми же именами. Реализация по умолчанию сохраняет список гиперссылок (определённых атрибутомHREFдля тегов<A>) в документе. Список гиперссылок доступен как атрибут данныхanchorlist.
-
HTMLParser.anchor_end() -
Этот метод вызывается в конце области якоря. Реализация по умолчанию добавляет текстовый маркер сноски, используя индекс в списке гиперссылок, созданном методом
anchor_bgn().
-
HTMLParser.handle_image(source, alt[, ismap[, align[, width[, height]]]]) -
Этот метод вызывается для обработки изображений. Реализация по умолчанию просто передаёт значение alt методу
handle_data().
-
HTMLParser.save_bgn() -
Начинает сохранение текстовых данных в буфере вместо отправки их объекту форматирования. Получите сохранённые данные через
save_end(). Использование парыsave_bgn()/save_end()не допускается вложенным.
-
HTMLParser.save_end() -
Заканчивает буферизацию текстовых данных и возвращает все данные, сохранённые с момента предыдущего вызова
save_bgn(). Если флагnofillравен ложному, пробелы сжимаются до одного пробела. Вызов этого метода без предыдущего вызоваsave_bgn()вызовет исключениеTypeError.
htmlentitydefs — Определения общих сущностей HTML
Примечание
Модуль htmlentitydefs переименован в html.entities в Python 3. Инструмент 2to3 автоматически адаптирует импорты при преобразовании ваших исходных файлов в Python 3.
Исходный код: Lib/htmlentitydefs.py
В этом модуле определены три словаря, name2codepoint, codepoint2name, и entitydefs. entitydefs используется модулем htmllib для предоставления атрибута entitydefs класса HTMLParser. Представленное здесь определение содержит все сущности, определённые XHTML 1.0, которые могут обрабатываться с помощью простой подстановки текста в наборе символов Latin-1 (ISO-8859-1).
-
htmlentitydefs.entitydefs -
Словарь, сопоставляющий определения сущностей XHTML 1.0 с их текстом замены в ISO Latin-1.
-
htmlentitydefs.name2codepoint -
Словарь, сопоставляющий имена HTML-сущностей с кодовыми точками Unicode.
Новое в версии 2.3.
-
htmlentitydefs.codepoint2name -
Словарь, сопоставляющий кодовые точки Unicode с именами HTML-сущностей.
Новое в версии 2.3.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/htmllib.html