August 2018
Intermediate to advanced
366 pages
10h 14m
English
You need to perform the following steps for this recipe:
We can replace XMLParser based on expat with our own parser based on HTMLParser and have TreeBuilder rely on it:
import xml.etree.ElementTree as ET
from html.parser import HTMLParser
class ETHTMLParser(HTMLParser):
SELF_CLOSING = {'br', 'img', 'area', 'base', 'col', 'command', 'embed', 'hr', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr'} def __init__(self, *args, **kwargs): super(ETHTMLParser, self).__init__(*args, **kwargs) self._builder = ET.TreeBuilder() self._stack = [] @property def _last_tag(self): ...