Urllib2 / рдореИрдХреЗрдирд╛рдЗрдЬ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реЗрдЯ-рдХреБрдХреА рдХреЛ рдЪрд┐рдкрдХрд╛рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ (рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП)

рдХреБрдЫ рдкрд╛рдардХреЛрдВ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдЬреАрдПрдИ рдмрдЧрдЯреНрд░реИрдХрд░ рдореЗрдВ, рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЕрдВрдХ 3379 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕реЗ рдкрд╛рдпрдерди (2.7 рдореЗрдВ рдХрдо рд╕реЗ рдХрдо) рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдФрд░ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ , рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╣рдо рдкрд╛рдпрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЕрдХреНрд╕рд░ рд╕рд╛рдЗрдЯреЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдХреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХрдИ рд╕реЗрдЯ-рдХреБрдХреА рд╣реЗрдбрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, urlfetch (рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ urllib / urllib2) рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдЗрди рд╕рднреА рд╣реЗрдбрд░ рдХреЛ рдПрдХ рдореЗрдВ рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рдХреЙрдорд╛ рдПрдХреНрд╕рдкрд╛рдпрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рдХрднреА-рдХрднреА рдХреБрдХреА рдЦреБрдж рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ urlib2 рдФрд░ рдореИрдХреЗрдирд╛рдЗрдЬреНрдб рд╕реЗ рдорд╛рдирдХ HTTPCookieProcessor рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ urllib2 рдпрд╛ рдореИрдХреЗрдирд╛рдЗрдЬ рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдкрд╛рдПрдВрдЧреЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рджред

рдПрдХ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдБ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЗрдбрд░ рдХреЛ HTTPCookieProcessor рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ:
import urllib2, re class SplitCookiesHandler(urllib2.BaseHandler): handler_order = 0 def http_response(self, req, response): headers = response.info().headers for h in headers[:]: matched = re.match("(?i)set-cookie:(.*)\n$", h) if matched is not None: headers.remove(h) for cookie in re.split(",(?= \w+[\w\d]*=)", matched.group(1)): headers.append("set-cookie:" + cookie + "\n") return response 


рдкрд░рд┐рд╕реАрдорди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЧрдВрднреАрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рджреЗ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреБрдХреА рдШрдЯрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рдирдП рдУрдкрдирдбрд╛рдпрд░реЗрдХреНрдЯрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ (рдпрд╛ рдРрдб_рд╣реИрдВрдбрд▓рд░ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдореЗрдВ рд╣реИ):
 import cookielib cj = cookielib.CookieJar() opener = urllib2.build_opener(SplitCookiesHandler(), urllib2.HTTPCookieProcessor(cj)) 


рд╕рдм рдХреБрдЫ, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
 r = opener.open("http://www.yandex.ru/") 


рдпрджрд┐ рдЖрдк (рдореЗрд░реЗ рдЬреИрд╕рд╛) рдореИрдХреЗрдирд╛рдЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рд╣рд░ рдЬрдЧрд╣ рдореИрдХреЗрдирд╛рдЗрдЬреНрдб рдХреЗ рд╕рд╛рде urllib2 рдХреЛ рдмрджрд▓реЗрдВ, рдФрд░ рдореИрдХреЗрдирд╛рдЗрдЬ рдХреЗ рдмрдЬрд╛рдп .build_opener () рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ:
 br = mechanize.Browser() br.add_handler(SplitCookiesHandler()) 

Source: https://habr.com/ru/post/In133731/


All Articles