Python λ° githubμ λν΄ μ λ°μ μΌλ‘ μ²μ μ νλ μ λ₯Ό μ΄ν΄ν΄ μ£Όμμμ€.
Play μ€ν μ΄μμ λ°μ΄ν°λ₯Ό μ€ν¬λ©νλ μμ²μ μ¬μ©νκ³ μμ΅λλ€. λ§μ μμ μμ²(μ½ 20k)μ ν΄μΌ ν©λλ€. μ½ 3000-4000 μμ²μ λν΄ νλ₯νκ² μλνμ§λ§ κ·Έ μ΄νμλ μ€λ¨λ©λλ€(SSL μ€λ₯). SSL λ° μμ²μ μ΅μνμ§ μμΌλ―λ‘ μμΈμ λͺ¨λ₯΄κ² μ΅λλ€.
μ€λ₯:
(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) )
μ΄ githubμ-efiλμ΄ μ€λ λμμ λμΌν λ¬Έμ κ°μλ κ² κ°μ΅λλ€. https://github.com/kennethreitz/requests/issues/3006 (μλ μ°Έμ‘°, κ·Έλ OPκ° μλ) μ°Ύμ μ μμμ΅λλ€. μΆκ° μ§μμ μν΄ μ΄λ¦° μ€λ λμ λλ€. μ λ νμ΄μ¬ 2.7μ μ¬μ©ν©λλ€. λν.
λλ κ½€ μ€λ«λμ μ΄κ²μ κ°ν μμκ³ μ¬κΈ°μμλ StackOverflowλ μ°Ύμ μ μμ΅λλ€. .
λμμ μ£Όμ μ κ°μ¬ν©λλ€. λΆλΆλͺ ν λΆλΆμ΄ μμΌλ©΄ μ£μ‘ν©λλ€. μλ €μ£ΌμΈμ.
λ§νλ€κ³ λ§νλ©΄ μμΈκ° λ°μνκΈ° λλ¬Έμ λκΉ? μλλ©΄ νμ μμ²μ΄ μλνμ§ μμ΅λκΉ? μΌμμ μΈ λ€νΈμν¬ μ€λ₯κ° _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