Spec-Zone.ru › Python 2.7

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.

См. также

Module formatter

Определение интерфейса для преобразования абстрактного потока событий форматирования в конкретные события вывода для объектов-писателей.

Module HTMLParser

Альтернативный HTML-парсер, предоставляющий несколько более низкоуровневый вид входных данных, но предназначен для работы с XHTML и не реализует некоторые конструкции синтаксиса SGML, не используемые в «развёрнутом HTML» и не являющиеся допустимыми для XHTML.

Module htmlentitydefs

Определение замены текста для сущностей XHTML 1.0.

Module sgmllib

Базовый класс для 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.

END_OF_DOCUMENT_MARKER ```
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API