fix parser when api is not 'etree'
This commit is contained in:
parent
3ebdea9faf
commit
ff87ba2348
1 changed files with 13 additions and 1 deletions
|
|
@ -25,8 +25,20 @@ except ImportError:
|
|||
from xml.etree import ElementTree
|
||||
|
||||
class Html5libParser(HTMLParser):
|
||||
"""
|
||||
Parser using html5lib.
|
||||
|
||||
Note that it is not available on every systems.
|
||||
"""
|
||||
|
||||
# Default implementation for each type of API.
|
||||
defaults = {'etree': ElementTree,
|
||||
}
|
||||
def __init__(self, api='etree'):
|
||||
HTMLParser.__init__(self, tree=treebuilders.getTreeBuilder(api, ElementTree))
|
||||
# if no default implementation is defined for this api, set it to None
|
||||
# to let getTreeBuilder() using the corresponding implementation.
|
||||
implementation = self.defaults.get(api, None)
|
||||
HTMLParser.__init__(self, tree=treebuilders.getTreeBuilder(api, implementation))
|
||||
|
||||
def parse(self, data, encoding):
|
||||
return HTMLParser.parse(self, data, encoding=encoding)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue