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
|
from xml.etree import ElementTree
|
||||||
|
|
||||||
class Html5libParser(HTMLParser):
|
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'):
|
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):
|
def parse(self, data, encoding):
|
||||||
return HTMLParser.parse(self, data, encoding=encoding)
|
return HTMLParser.parse(self, data, encoding=encoding)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue