4343except ImportError :
4444 from urllib .parse import urlencode , quote_plus
4545
46+ try :
47+ # Python 2 forward compatibility
48+ range = xrange
49+ except NameError :
50+ pass
51+
4652from openscrapers .modules import cache
4753from openscrapers .modules import dom_parser
4854from openscrapers .modules import log_utils
4955from openscrapers .modules import workers
5056
51-
5257def request (url , close = True , redirect = True , error = False , proxy = None , post = None , headers = None , mobile = False , XHR = False ,
5358 limit = None , referer = None , cookie = None , compression = True , output = '' , timeout = '30' , ignoreSsl = False ,
5459 flare = True , ignoreErrors = None ):
@@ -135,7 +140,9 @@ def http_response(self, request, response):
135140
136141 if isinstance (post , dict ):
137142 # Gets rid of the error: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
138- for key , value in post .iteritems ():
143+ try : iter_items = post .iteritems ()
144+ except : iter_items = post .items ()
145+ for key , value in iter_items :
139146 try :
140147 post [key ] = value .encode ('utf-8' )
141148 except :
@@ -391,7 +398,10 @@ def _get_result(response, limit=None):
391398
392399def parseDOM (html , name = '' , attrs = None , ret = False ):
393400 if attrs :
394- attrs = dict ((key , re .compile (value + ('$' if value else '' ))) for key , value in attrs .iteritems ())
401+ try :
402+ attrs = dict ((key , re .compile (value + ('$' if value else '' ))) for key , value in attrs .iteritems ())
403+ except :
404+ attrs = dict ((key , re .compile (value + ('$' if value else '' ))) for key , value in attrs .items ())
395405 results = dom_parser .parse_dom (html , name , attrs , ret )
396406
397407 if ret :
@@ -417,7 +427,7 @@ def _replaceHTMLCodes(txt):
417427
418428def randomagent ():
419429 BR_VERS = [
420- ['%s.0' % i for i in xrange (18 , 50 )],
430+ ['%s.0' % i for i in range (18 , 50 )],
421431 ['37.0.2062.103' , '37.0.2062.120' , '37.0.2062.124' , '38.0.2125.101' , '38.0.2125.104' , '38.0.2125.111' ,
422432 '39.0.2171.71' , '39.0.2171.95' , '39.0.2171.99' , '40.0.2214.93' , '40.0.2214.111' , '40.0.2214.115' ,
423433 '42.0.2311.90' , '42.0.2311.135' , '42.0.2311.152' , '43.0.2357.81' , '43.0.2357.124' , '44.0.2403.155' ,
@@ -449,11 +459,11 @@ def __init__(self):
449459 def get (self , netloc , ua , timeout ):
450460 threads = []
451461
452- for i in range (0 , 15 ):
462+ for i in list ( range (0 , 15 ) ):
453463 threads .append (workers .Thread (self .get_cookie , netloc , ua , timeout ))
454464 [i .start () for i in threads ]
455465
456- for i in range (0 , 30 ):
466+ for i in list ( range (0 , 30 ) ):
457467 if self .cookie is not None :
458468 return self .cookie
459469 time .sleep (1 )
0 commit comments