19.3. htmllib — A parser for HTML documents¶
Deprecated since version 2.6:
Deprecated since version 2.6: The htmllib module has been removed in Python 3.0.
This module defines a class which can serve as a base for parsing text files
formatted in the HyperText Mark-up Language (HTML). The class is not directly
concerned with I/O — it must be provided with input in string form via a
method, and makes calls to methods of a “formatter” object in order to produce
output. The HTMLParser class is designed to be used as a base class
for other classes in order to add functionality, and allows most of its methods
to be extended or overridden. In turn, this class is derived from and extends
the SGMLParser class defined in module sgmllib. The
HTMLParser implementation supports the HTML 2.0 language as described
in RFC 1866. Two implementations of formatter objects are provided in the
formatter module; refer to the documentation for that module for
information on the formatter interface.
The following is a summary of the interface defined by
sgmllib.SGMLParser:
The interface to feed data to an instance is through the
feed()method, which takes a string argument. This can be called with as little or as much text at a time as desired;p.feed(a); p.feed(b)has the same effect asp.feed(a+b). When the data contains complete HTML markup constructs, these are processed immediately; incomplete constructs are saved in a buffer. To force processing of all unprocessed data, call theclose()method.For example, to parse the entire contents of a file, use:
parser.feed(open('myfile.html').read()) parser.close()
The interface to define semantics for HTML tags is very simple: derive a class and define methods called
start_tag(),end_tag(), ordo_tag(). The parser will call these at appropriate moments:start_tag()ordo_tag()is called when an opening tag of the form<tag ...>is encountered;end_tag()is called when a closing tag of the form<tag>is encountered. If an opening tag requires a corresponding closing tag, like<H1>...</H1>, the class should define thestart_tag()method; if a tag requires no closing tag, like<P>, the class should define thedo_tag()method.
The module defines a parser class and an exception:
-
class
htmllib.HTMLParser(formatter)¶ This is the basic HTML parser class. It supports all entity names required by the XHTML 1.0 Recommendation (http://www.w3.org/TR/xhtml1). It also defines handlers for all HTML 2.0 and many HTML 3.0 and 3.2 elements.
-
exception
htmllib.HTMLParseError¶ Exception raised by the
HTMLParserclass when it encounters an error while parsing.New in version 2.4:
New in version 2.4.