inflearn logo
강의

講義

知識共有

12時間で終わるPythonを活用したクロール

req.get("http://www.naver.com) 입력후 "Response[200]" 이라고 나오지 않네요 ㅠㅠ

202

yisu1864

投稿した質問数 2

0

수업을 따라하던중 아래와 같이 발생됩니다. 원인을 알수가 없어서 후속 수업관련 따라하기가 곤란하테요ㅠㅠ

 

import requests as req

req.get("https://www.naver.com")

상기와 같이 입력후

"Response [200]" 이라고 나타나지 않고 아래와 같이 나타납니다.

뭐가 잘못된건지 알수가 없어서 질의합니다.

---------------------------------------------------------------------------
SSLCertVerificationError                  Traceback (most recent call last)
File C:\ProgramData\anaconda3\Lib\site-packages\urllib3\connectionpool.py:468, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
    467 try:
--> 468     self._validate_conn(conn)
    469 except (SocketTimeout, BaseSSLError) as e:

File C:\ProgramData\anaconda3\Lib\site-packages\urllib3\connectionpool.py:1097, in HTTPSConnectionPool._validate_conn(self, conn)
   1096 if conn.is_closed:
-> 1097     conn.connect()
   1099 if not conn.is_verified:

File C:\ProgramData\anaconda3\Lib\site-packages\urllib3\connection.py:642, in HTTPSConnection.connect(self)
    634     warnings.warn(
    635         (
    636             f"System time is way off (before {RECENT_DATE}). This will probably "




~ 중간 생략 ~

File C:\ProgramData\anaconda3\Lib\site-packages\urllib3\util\retry.py:515, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
    514     reason = error or ResponseError(cause)
--> 515     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    517 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)

MaxRetryError: HTTPSConnectionPool(host='www.naver.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))

During handling of the above exception, another exception occurred:

SSLError                                  Traceback (most recent call last)
Cell In[2], line 1
----> 1 req.get("http://www.naver.com")

File C:\ProgramData\anaconda3\Lib\site-packages\requests\api.py:73, in get(url, params, **kwargs)
     62 def get(url, params=None, **kwargs):
     63     r"""Sends a GET request.
     64 
     65     :param url: URL for the new :class:`Request` object.
   (...)
     70     :rtype: requests.Response
     71     """
---> 73     return request("get", url, params=params, **kwargs)

File C:\ProgramData\anaconda3\Lib\site-packages\requests\api.py:59, in request(method, url, **kwargs)
     55 # By using the 'with' statement we are sure the session is closed, thus we
     56 # avoid leaving sockets open which can trigger a ResourceWarning in some
     57 # cases, and look like a memory leak in others.
     58 with sessions.Session() as session:
---> 59     return session.request(method=method, url=url, **kwargs)


~ 중간 생략 ~

File C:\ProgramData\anaconda3\Lib\site-packages\requests\adapters.py:517, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
    513         raise ProxyError(e, request=request)
    515     if isinstance(e.reason, _SSLError):
    516         # This branch is for urllib3 v1.22 and later.
--> 517         raise SSLError(e, request=request)
    519     raise ConnectionError(e, request=request)
    521 except ClosedPoolError as e:

SSLError: HTTPSConnectionPool(host='www.naver.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))

 

python 웹-크롤링

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

님께서 겪고 계신 오류는 SSL 인증서 검증 실패로 인한 것입니다. 이는 Python에서 https 요청을 보낼 때 SSL 인증서를 제대로 검증하지 못해서 발생하는 문제입니다. 일반적으로 macOS에서 Python을 설치한 경우에 처음에 SSL 인증서 경로를 제대로 찾지 못하는 경우가 많습니다. Windows에서도 유사한 문제가 발생할 수 있습니다.

해결 방법 중 하나로 requests 모듈을 사용할 때 SSL 인증서 검증을 하지 않도록 설정할 수 있습니다. 하지만 보안 상 좋지 않은 방법이기 때문에, 개발 환경에서만 임시로 사용해야 합니다. 아래는 SSL 인증서 검증을 하지 않는 방법입니다:

import requests

response = requests.get('https://www.naver.com', verify=False)
print(response.status_code)

verify=False 옵션을 추가하여 SSL 인증서 검증 과정을 생략할 수 있습니다. 다시 말씀드리지만, 이 방법은 보안에 취약하므로 실제 production 환경에서는 사용하지 않는 것이 좋습니다.

SSL 인증서 문제를 안전하게 해결하려면 해당 OS의 인증서 저장소에 올바른 인증서를 설치하거나 Python이 인증서를 확인할 수 있도록 설정하는 방법을 찾아보는 것이 좋습니다.

원하는 답변을 찾지 못하셨나요? 그럼 우측 하단의 ‘문의하기’에서 직접 문의해주세요. 최대한 빠르게 답변드리도록 하겠습니다!

프롬프트의 영문 버전을 만들 때, 출력 규칙에 포함된 한글 부분은 영어로 번역하지 않고 그대로 유지하면서, 영문 편과 한글 편을 한 번에 함께 출력하려면 어떤 워크플로우로 구성하면 좋을까요?

0

8

0

프로그램은 뭘 사용하시는 건가요??

1

10

2

수업자료와 노션 공유 문제

0

17

3

python run.py 실행시 에러 문제

1

38

3

조건 반복문 질문: for 문 ?

0

25

0

54강 4분 41초에서 질문 있어요.

0

27

1

커서창

1

36

2

강의 제작

1

36

1

23강 질문드립니다, 강사님.

0

24

1

naver 글자 수집 오류 건

0

28

1

교육자료가 너무 오래되어서 지시한대로 진행하려 해도 안됩니다.

0

41

1

reg.get("http://www.naver.com")

0

75

2

VS로 수강 중인 수강생

0

59

1

네이버 페이지 데이터 수집 실습에서 a.nav가 안되요ㅠ

0

96

1

궁금증

0

107

1

Beautifulsoup실습도중 발생한 문제

0

165

1

selenium 버전이 4.x 대가 되면서 메서드가 달라졌고, 크롬드라이버 다운도 방식이 달라졌습니다(24.09.07 기준)

1

297

1

수업중 따라하기 오류 ㅠㅠ

0

262

2

인스타 그램 크롤링 할때

0

951

1

질문

0

331

1

셀레니움 변경사항 입니다.

0

285

0

동영상안에

0

258

0

코스피거래상위종목 수집 강의에서 nth-child 결과 질문입니다

0

655

1

질문이 있습니다.

0

306

1