在线文档教程

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版本的新功能。