htmllib
htmllib - HTML文档的解析器
自2.6版弃用:htmllib模块已在Python 3中删除。在Python 3中使用HTMLParser,而在Python 3中使用等效的html.parser。
该模块定义了一个类,它可以作为解析超文本标记语言(HTML)格式的文本文件的基础。 该类不直接关注I / O - 它必须通过方法以字符串形式提供输入,并调用“格式化程序”对象的方法以产生输出。 HTMLParser类旨在用作其他类的基类以添加功能,并允许扩展或覆盖大部分方法。 反过来,这个类派生并扩展了在模块sgmllib中定义的SGMLParser类。 HTMLParser实现支持RFC 1866中描述的HTML 2.0语言。格式化程序模块提供了格式化程序对象的两个实现; 有关格式化程序接口的信息,请参阅该模块的文档。
以下是由以下定义的接口摘要sgmllib.SGMLParser
:
将数据提供给实例的接口是通过feed()方法,该方法接受一个字符串参数。 这可以根据需要每次尽可能少或尽可能多的文本调用;p.feed(一); (b)与p.feed(a + b)具有相同的效果。 当数据包含完整的HTML标记结构时,将立即处理这些结构; 不完整的结构被保存在缓冲区中。 要强制处理所有未处理的数据,请调用close()方法。
- 为HTML标记定义语义的接口非常简单:派生一个类并定义称为start_tag(),end_tag()或do_tag()的方法。 解析器会在适当的时候调用它们:当遇到<tag ...>形式的开始标签时,会调用start_tag()或do_tag(); 当遇到<tag>形式的结束标签时,调用end_tag()。 如果开始标签需要相应的结束标签,如<H1> ... </ H1>,则类应该定义start_tag()方法; 如果标签不需要结束标签,如<P>,则该类应定义do_tag()方法。
该模块定义了一个解析器类和一个异常:
class htmllib.HTMLParser(formatter)
这是基本的HTML解析器类。它支持XHTML 1.0 Recommendation(https://www.w3.org/TR/xhtml1)所需的所有实体名称。它还为所有HTML 2.0和许多HTML 3.0和3.2元素定义处理程序。
exception htmllib.HTMLParseError
HTMLParser类在解析时遇到错误时引发异常。
2.4版本中的新功能。
See also
模块格式化程序接口定义,用于将格式化事件的抽象流转换为写入程序对象上的特定输出事件。 模块HTMLParser替代HTML解析器,提供了稍低级别的输入视图,但被设计为与XHTML一起工作,并且没有实现某些未在“已部署的HTML”中使用且对XHTML不合法的SGML语法。 模块htmlentitydefs定义XHTML 1.0实体的替换文本。 模块sgmllib HTMLParser的基类。
1. HTMLParser对象
除了标记方法之外,HTMLParser
该类还提供了一些额外的方法和实例变量供标记方法使用。
HTMLParser.formatter
这是与解析器关联的格式化程序实例。
HTMLParser.nofill
布尔标志,当空白不应该折叠时应该为true,或者应该是false。 一般来说,只有当字符数据被视为“预先格式化”的文本时,这应该是正确的,如在<PRE>元素中。 默认值是false。 这会影响handle_data()和save_end()的操作。
HTMLParser.anchor_bgn(href, name, type)
该方法在锚点区域的开始处被调用。 参数对应于具有相同名称的<A>标签的属性。 默认实现维护文档内的超链接列表(由<A>标签的HREF属性定义)。 超链接列表可作为数据属性锚点列表。
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标志为false,则空格将折叠为单个空格。 没有先前调用save_bgn()的情况下调用此方法将引发TypeError异常。
htmlentitydefs - HTML一般实体的定义
注意
htmlentitydefs模块已在Python 3中重命名为html.entities。当将源代码转换为Python 3时,2to3工具将自动适应导入。
源代码:
Lib / htmlentitydefs.py
该模块定义了三个字典,name2codepoint,codepoint2name和entitydefs。 entitydefs被htmllib模块用来提供HTMLParser类的entitydefs属性。 此处提供的定义包含所有由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版本的新功能。