Анимация
JavaScript
|
Главная Библионтека 29.2 htmllib - обработка HTML-документов Этот модуль определяет класс HTHLParser (производный от sgmllib.SGHLParser), который может быть использован в качестве базового для класса, реализующего обработку текста в формате HTML (Hypertext Markup Language, язык разметки гипертекста). В настоящий момент этот класс поддерживает HTML 2.01. Для получения вывода экземпляры HTHLParser и производных от него классов вызывают методы указанного объекта, реализующего форматирование текста. Стандартный модуль formatter предоставляет два варианта таких объектов (смотрите описание модуля для получения информации об интерфейсе объектов, реализующих форматирование). 1 http: www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec toc.html unknown entityref(ref) Вызывается для обработки ссылки на сущность с неизвестным именем в виде &ref; (см. описание метода handle entityref()). Вам следует переопределить этот метод в производном классе: исходная реализация ничего не делает. Помимо переопределения некоторых из перечисленных выше методов, в производных классах Вам следует определить методы для обработки тегов. Имена тегов в размеченном тексте могут содержать буквы в любом регистре: перед вызовом метода имя будет приведено к нижнему регистру (то есть tag в именах методов, описанных ниже, является именем тега, приведенного к нижнему регистру). В качестве атрибута attributes используется список пар ( name, value) для всех атрибутов, найденных внутри угловых скобок тега, где name - имя атрибута, приведенное к нижнему регистру, и value - его значение. start tag(attributes) Вызывается для обработки открывающего тега tag. Этот метод имеет преимущество над методом do tag() . do tag( attributes) Вызывается для обработки открывающего тега tag, для которого не должно быть соответствующего закрывающего тега. end tag() Вызывается для обработки закрывающего тега tag. Обработчик хранит стек открытых элементов, для которых еще не было закрывающих тегов. В этот стек помещаются только теги, для которых есть соответствующий метод start tag() . Определение метода end tag() не является обязательным. Для тегов, обрабатываемых методами do tag() и unknown tag() нет смысла определять соответствующие методы end tag() - они не будут использованы. 29.2. htmllib - обработка HTML-документов 387 HTMLParser( formatter) Создает и возвращает объект, реализующий обработку текста в формате HTML. Этот класс поддерживает все имена сущностей, требуемых спецификацией HTML 2.0 (определены в модуле htmlentitydefs ), и определяет обработчики для всех элементов HTML 2.0 и многих элементов HTML 3.0 и 3.2. В дополнение к методам, реализующий обработку тегов (как того требует интерфейс класса sgmllib.SGMLParser), класс HTMLParser предоставляет следующие дополнительные методы и атрибуты данных: formatter Объект, реализующий форматирование текста, который был передан в качестве аргумента при инициализации. nofill Если этот флаг является ложью, идущие друг за другом символы пропуска будут свернуты в один пробел методом handle data() или save end() , в противном случае будут оставлены без изменений. Обычно он должен быть истинным только внутри элемента <pre>. anchor bgn(href, name, type) Вызывается в начале региона, помеченного якорем. В качестве аргументов используются значения одноименных атрибутов тега <a> (если тег не содержит какого-либо атрибута, в качестве аргумента для него используется пустая строка). Исходная реализация сохраняет все ссылки, содержащиеся в документе, в списке, доступном через атрибут anchorlist. anchor end() Вызывается в конце региона, помеченного якорем. Исходная реализация добавляет текстовую ссылку в виде [index], где index - индекс соответствующего элемента в списке ссылок (атрибут anchorlist). handle image( src, alt [, ismap [, align [, width [, height ]]]]) Вызывается для обработки вставок изображений. В качестве аргументов используются значения одноименных атрибутов тега <img> (аргументы width и height являются целыми числами). Исходная реализация вызывает handle data( alt ) . save bgn() Устанавливает режим, в котором все символьные данные сохраняются во внутреннем буфере вместо того, чтобы быть переданными объекту, реализующему форматирование (аргумент formatter конструктора). Вы можете извлечь сохраненные данные с помощью метода save end() . save end() Заканчивает работу в режиме, в котором все символьные данные сохраняются во внутреннем буфере, и возвращает все сохраненные данные. Если атрибут nofill является ложью, последовательности символов пропуска заменяются одним пробелом. Этот модуль определяет один словарь, который используется модулем htmllib в качестве значения атрибута entitydefs класса htmllib.HTMLParser. Этот словарь содержит записи для всех сущностей (entity) HTML 2.0, отображая их имена в символы в кодировке Latin-1 (ISO-8859-1). Сущности, которые не могут быть представлены лите-рально в рамках Latin-1, отображаются в запись вида &#ref;, где ref - код символа в Unicode. entitydefs Словарь, отображающий имена сущностей HTML 2.0 в символ кодировки Latin-1 или ссылку на символ Unicode в виде &#ref;. 29.4 xml.parsers.expat - быстрая обработка XML-документов с помощью библиотеки Expat Модуль xml.parsers.expat доступен, начиная с версии 2.0 и предоставляет интерфейс библиотеке Expat, реализующей быструю обработку XML-документов без проверки на соответствие DTD2. Модуль определяет следующие две функции, исключение и подмодуль: ErrorString( err code) Возвращает строку с пояснением к ошибке с кодом err code. ParserCreate ([encoding [, namespace separator\]) Создает и возвращает объект, реализующий обработку текста в формате XML. Если задан и не равен None, он должен быть строкой, указывающей кодировку: UTF-8, UTF-16 или ISO-8859-1 (по умолчанию обработчик автоматически выбирает между UTF-8 и UTF-16). Если задан и не равен None аргумент namespace separator (должен быть строкой из одного символа), включается обработка пространств имен. В этом случае имена элементов и атрибутов, определенных в каком-либо пространстве имен, будут передаваться функциям StartElementHandler() и EndElementHandler() в видеnamespace URI + namespace separator + name, где namespace URI - URI пространства имен и name - имя элемента или атрибута. Если аргумент namespace separator равен \000, в качестве разделителя используется пустая строка. Например, пусть в качестве аргумента namespace separator используется и обрабатывается следующий документ: 2Модуль xml.parsers.expat является надстройкой над модулем pyexpat. Использовать модуль pyexpat напрямую не рекомендуется. 29.3 htmlentitydefs - определения сущностей HTML 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 [ 123 ] 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |