99"""
1010import re
1111
12+ import parsel
1213import six
1314from lxml import etree
1415from parsel import Selector as ParselSelector
1516from parsel import SelectorList as ParselSelectorList
17+ from parsel import selector
1618from w3lib .html import replace_entities as w3lib_replace_entities
1719
1820
@@ -54,8 +56,7 @@ def extract_regex(regex, text, replace_entities=True, flags=0):
5456
5557
5658def create_root_node (text , parser_cls , base_url = None ):
57- """Create root node for text using given parser class.
58- """
59+ """Create root node for text using given parser class."""
5960 body = text .strip ().replace ("\x00 " , "" ).encode ("utf8" ) or b"<html/>"
6061 parser = parser_cls (recover = True , encoding = "utf8" , huge_tree = True )
6162 root = etree .fromstring (body , parser = parser , base_url = base_url )
@@ -64,6 +65,10 @@ def create_root_node(text, parser_cls, base_url=None):
6465 return root
6566
6667
68+ if parsel .__version__ < "1.7.0" :
69+ selector .create_root_node = create_root_node
70+
71+
6772class SelectorList (ParselSelectorList ):
6873 """
6974 The :class:`SelectorList` class is a subclass of the builtin ``list``
@@ -150,6 +155,3 @@ def re(self, regex, replace_entities=True, flags=re.S):
150155 return extract_regex (
151156 regex , self .get (), replace_entities = replace_entities , flags = flags
152157 )
153-
154- def _get_root (self , text , base_url = None ):
155- return create_root_node (text , self ._parser , base_url = base_url )
0 commit comments