рдХреГрдкрдпрд╛ рдореЗрд░реЗ рд╕рд╛рде рд░рд╣реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдФрд░ рдЬреАрдердм рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВред
рдореИрдВ Play Store рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдХреНрд░реИрдк рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЕрдиреБрд░реЛрдз (рд▓рдЧрднрдЧ 20k) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд▓рдЧрднрдЧ 3000-4000 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рдЕрдЯрдХ рдЬрд╛рддрд╛ рд╣реИ (рдПрд╕рдПрд╕рдПрд▓ рддреНрд░реБрдЯрд┐)ред рдореИрдВ рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред
рддреНрд░реБрдЯрд┐:
(SSLError Traceback (most recent call last)
<ipython-input-23-1da544640d89> in <module>()
53 time.sleep(0.1)
54
---> 55 r = requests.get('https://play.google.com' + link + '&hl=en')
56 link_tree = html.fromstring(r.content)
57 description = link_tree.xpath('//div[@jsname="C4s9Ed"]/text()') + link_tree.xpath('//div[@jsname="C4s9Ed"]/p/text()')
C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\api.pyc in get(url, params, **kwargs)
65
66 kwargs.setdefault('allow_redirects', True)
---> 67 return request('get', url, params=params, **kwargs)
68
69
C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\api.pyc in request(method, url, **kwargs)
51 # cases, and look like a memory leak in others.
52 with sessions.Session() as session:
---> 53 return session.request(method=method, url=url, **kwargs)
54
55
C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
466 }
467 send_kwargs.update(settings)
--> 468 resp = self.send(prep, **send_kwargs)
469
470 return resp
C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\sessions.pyc in send(self, request, **kwargs)
574
575 # Send the request
--> 576 r = adapter.send(request, **kwargs)
577
578 # Total elapsed time of the request (approximately)
C:\Users\Nathan\AppData\Local\Enthought\Canopy\User\lib\site-packages\requests\adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
445 except (_SSLError, _HTTPError) as e:
446 if isinstance(e, _SSLError):
--> 447 raise SSLError(e, request=request)
448 elif isinstance(e, ReadTimeoutError):
449 raise ReadTimeout(e, request=request)
SSLError: EOF occurred in violation of protocol (_ssl.c:590) )
The-efi, рдЗрд╕ github рдкрд░, рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: https://github.com/kennethreitz/requests/issues/3006 (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ, рд╡рд╣ рдУрдкреА рдирд╣реАрдВ рдерд╛) рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣рд╛ рдерд╛ рдЖрдЧреЗ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬреЛ рдзрд╛рдЧрд╛ рдЦреЛрд▓рд╛ред рдореИрдВ рдкрд╛рдпрдерди 2.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рднреАред
рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рди рд╣реА рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ (рдЬрд╡рд╛рдм рд╢рд╛рдпрдж рдореЗрд░реА рдирд╛рдХ рдХреЗ рдиреАрдЪреЗ рдерд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИ рд╣реИ) .
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рддреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ -- рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдЬрдм рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдлрдВрд╕ рдЧрдП рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдкрд╡рд╛рдж рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рдЕрдиреБрд╡рд░реНрддреА рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд╖рдгрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ _do_ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реЗрдм рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдкрд╡рд╛рдж рдЖрдЧред рдЕрдиреБрд╡рд░реНрддреА рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдбрд░ рдерд╛ рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рдпрд╛ рдХреБрдЫ рдФрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реЛ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк requests.*
рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдЕрдкрдиреЗ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рдореЗрдВ рд╣реИрдВред рдЖрдкрдХреЛ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП:
рдореИрдВрдиреЗ рдЗрд╕реЗ @Lukasa рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ:
import requests
sess = requests.Session()
adapter = requests.adapters.HTTPAdapter(max_retries = 20)
sess.mount('http://', adapter)
рдлрд┐рд░, рдЬрд╣рд╛рдВ рдореИрдВ рдкрд╣рд▓реЗ requests.get()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ sess.get()
ред
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @ рд▓реБрдХрд╛рд╕рд╛ !
рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдерд╛, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ ndg-httpsclient рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдерд╛
@variable рдореИрдВрдиреЗ ndg-httpsclient рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рд╡рд╣реА рддреНрд░реБрдЯрд┐: urllib.error.URLError :
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдерд╛, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ ndg-httpsclient рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдерд╛
https://github.com/kennethreitz/requests/issues/3605