源码: Lib/html/__init__.py
该模块定义了操作HTML的工具。
- html.escape(s, quote=True)
将字符串 s 中的字符``&`` 、 < 和 > 转换为安全的HTML序列。 如果需要在 HTML 中显示可能包含此类字符的文本,请使用此选项。 如果可选的标志 quote 为真值,则字符 (") 和 (') 也被转换;这有助于包含在由引号分隔的 HTML 属性中,如 <a href="...">。
- html.unescape(s)
将字符串 s 中的所有命名和数字字符引用 (例如 >, >, >) 转换为相应的Unicode字符。 此函数使用HTML 5标准为有效和无效字符引用定义的规则,以及 HTML 5 命名字符引用列表。
html 包中的子模块是:
html.parser —— 具有宽松解析模式的HTML / XHTML解析器
html.entities – HTML 实体定义
源代码: Lib/html/parser.py
这个模块定义了一个 HTMLParser 类,为 HTML(超文本标记语言)和 XHTML 文本文件解析提供基础。
class html.parser.HTMLParser(*, convert_charrefs=True)
创建一个能解析无效标记的解析器实例。
如果 convert_charrefs 为 True (默认值),则所有字符引用( script/style 元素中的除外)都会自动转换为相应的 Unicode 字符。
一个 HTMLParser 类的实例用来接受 HTML 数据,并在标记开始、标记结束、文本、注释和其他元素标记出现的时候调用对应的方法。要实现具体的行为,请使用 HTMLParser 的子类并重载其方法。
这个解析器不检查结束标记是否与开始标记匹配,也不会因外层元素完毕而隐式关闭了的元素引发结束标记处理。
HTMLParser 实例有下列方法:
- HTMLParser.feed(data)
填充一些文本到解析器中。如果包含完整的元素,则被处理;如果数据不完整,将被缓冲直到更多的数据被填充,或者 close() 被调用。data 必须为 str 类型。
- HTMLParser.close()
如同后面跟着一个文件结束标记一样,强制处理所有缓冲数据。这个方法能被派生类重新定义,用于在输入的末尾定义附加处理,但是重定义的版本应当始终调用基类 HTMLParser 的 close() 方法。
- HTMLParser.reset()
重置实例。丢失所有未处理的数据。在实例化阶段被隐式调用。
- HTMLParser.getpos()
返回当前行号和偏移值。
- HTMLParser.get_starttag_text()
返回最近打开的开始标记中的文本。 结构化处理时通常应该不需要这个,但在处理“已部署”的 HTML 或是在以最小改变来重新生成输入时可能会有用处(例如可以保留属性间的空格等)。
下列方法将在遇到数据或者标记元素的时候被调用。他们需要在子类中重载。基类的实现中没有任何实际操作(除了 handle_startendtag() ):
- HTMLParser.handle_starttag(tag, attrs)
这个方法在标签开始的时候被调用(例如: <div id="main"> )。
tag 参数是小写的标记名。attrs 参数是一个 (name, value) 形式的列表,包含了所有在标记的 <> 括号中找到的属性。name 转换为小写,value 的引号被去除,字符和实体引用都会被替换。
实例中,对于标签 <A HREF="https://www.cwi.nl/">,这个方法将以下列形式被调用 handle_starttag('a', [('href', 'https://www.cwi.nl/')]) 。
html.entities 中的所有实体引用,会被替换为属性值。
- HTMLParser.handle_endtag(tag)
此方法被用来处理元素的结束标记(例如: </div> )。
tag 参数是小写的标签名。
- HTMLParser.handle_startendtag(tag, attrs)
类似于 handle_starttag(), 只是在解析器遇到 XHTML 样式的空标记时被调用( <img ... />)。这个方法能被需要这种特殊词法信息的子类重载;默认实现仅简单调用 handle_starttag() 和 handle_endtag() 。
- HTMLParser.handle_data(data)
这个方法被用来处理任意数据(例如:文本节点和 <script>...</script> 以及 <style>...</style> 中的内容)。
- HTMLParser.handle_entityref(name)
这个方法被用于处理 &name; 形式的命名字符引用(例如 >),其中 name 是通用的实体引用(例如: 'gt')。如果 convert_charrefs 为 True,该方法永远不会被调用。
- HTMLParser.handle_charref(name)
这个方法被用来处理 NNN; 和 NNN; 形式的十进制和十六进制字符引用。例如,> 等效的十进制形式为 > ,而十六进制形式为 > ;在这种情况下,方法将收到 '62' 或 'x3E' 。如果 convert_charrefs 为 True ,则该方法永远不会被调用。
- HTMLParser.handle_comment(data)
这个方法在遇到注释的时候被调用(例如: <!--comment--> )。
例如, <!-- comment --> 这个注释会用 ' comment ' 作为参数调用此方法。
Internet Explorer 条件注释(condcoms)的内容也被发送到这个方法,因此,对于 <!--[if IE 9]>IE9-specific content<![endif]--> ,这个方法将接收到 '[if IE 9]>IE9-specific content<![endif]' 。
- HTMLParser.handle_decl(decl)
这个方法用来处理 HTML doctype 申明(例如 <!DOCTYPE html> )。
decl 形参为 <!...> 标记中的所有内容(例如: 'DOCTYPE html' )。
- HTMLParser.handle_pi(data)
此方法在遇到处理指令的时候被调用。data 形参将包含整个处理指令。例如,对于处理指令 <?proc color='red'> ,这个方法将以 handle_pi("proc color='red'") 形式被调用。它旨在被派生类重载;基类实现中无任何实际操作。
注解 HTMLParser 类使用 SGML 语法规则处理指令。使用 '?' 结尾的 XHTML 处理指令将导致 '?' 包含在 data 中。
- HTMLParser.unknown_decl(data)
当解析器读到无法识别的声明时,此方法被调用。
data 形参为 <![...]> 标记中的所有内容。某些时候对派生类的重载很有用。基类实现中无任何实际操作。
源码: Lib/html/entities.py
该模块定义了四个词典, html5、 name2codepoint、 codepoint2name、以及 entitydefs。
- html.entities.html5
将 HTML5 命名字符引用 1 映射到等效的 Unicode 字符的字典,例如 html5['gt;'] == '>'。 请注意,尾随的分号包含在名称中(例如 'gt;'),但是即使没有分号,一些名称也会被标准接受,在这种情况下,名称出现时带有和不带有 ';'。另见 html.unescape()。
- html.entities.entitydefs
将 XHTML 1.0 实体定义映射到 ISO Latin-1 中的替换文本的字典。
- html.entities.name2codepoint
将 HTML 实体名称映射到 Unicode 代码点的字典。
- html.entities.codepoint2name
将 Unicode 代码点映射到 HTML 实体名称的字典。
本文暂时没有评论,来添加一个吧(●'◡'●)