티스토리 뷰
Python에서 웹 크롤링을 진행할 때, Senelium을 이용하여 사이트를 접속하고 Requests를 이용하여 원하는 데이터를 가져옵니다.
Requests는 HTTP 메소드를 이용하여 접속을 하는데, 주로 GET과 POST를 사용합니다.
GET은 requests.get()을 사용하고 POST는 requests.post()를 사용합니다.
1. requests 모듈 설치
pip(패키지 관리자)를 이용하여 모듈을 설치합니다.
pip install requests
pip install requests
2. 초간단 테스트
ㄱ. 정상적인 https 사이트 접속 코드 및 결과
import requests
response = requests.get("https://www.naver.com")
data = response.text
print(data)
테스트로 네이버(https://www.naver.com) 사이트를 접속하여 봅니다.
<!doctype html> <html lang="ko">
<head> <meta charset="utf-8">
<title>NAVER</title> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1190">
<meta name="apple-mobile-web-app-title" content="NAVER"/>
<meta name="robots" content="index,nofollow"/>
<meta name="description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/>
https(암호화된 사이트)에서 정상적으로 html 문서가 그대로 출력됨을 확인할 수 있습니다.
ㄴ. 신뢰하지 않은 SSL 인증서가 설치되어 있는 https 사이트 접속 및 결과
그래서 제가 테스트하는 https 서버에 requests 모듈을 이용하여 접속 테스트를 시도해보았습니다.
테스트 서버다 보니 https의 인증서가 정상적으로 설치하지 않았습니다.
참고로, 인증서가 없는 사이트는 접속 시 웹 브라우저에서 다음과 같은 에러 메시지가 발생합니다
테스트 서버다 보니 다음과 같이 클릭하면 됩니다.

- 고급 클릭
- 안전하지 않음으로 이동 클릭
시 정상적으로 사이트에 접속합니다.
다시 돌아와서 테스트 서버의 URL을 Get으로 요청합니다.
import requests
url= "https://192.168.105.2"
response = requests.get(url)
data = response.text
print(data)
이번에는 에러 메시지가 다음과 같이 발생합니다.
requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.105.2', port=443):
Max retries exceeded with url: /
(Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed: self signed certificate (_ssl.c:1051)')))
에러 메시지 : SSL: CERTIFICATE_VERIFY_FAILED , Certificate verify failed
인증서와 관련하여 유효하지 않기에 에러 메시지를 뱉고(?) Trackback과 함께 프로그램이 종료됩니다.
해결 방법
requests 모듈에서 url 뒤에 옵션을 하나 주면 해결할 수 있습니다.
response = requests.get(url,verify=False)
verify=False
해당 옵션을 사용하면 HTTPS 요청에 대한 SSL 인증서 확인 과정을 생략하겠다는 의미입니다.
InsecureRequestWarning:
Unverified HTTPS request is being made.
Adding certificate verification is strongly advised.
See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
<Response [200]>
SSL-Warning 문구는 보이지만 응답 코드는 200이 떨어져서 정상적으로 사이트에 접속 됨을 확인 할 수 있었습니다.
http 응답코드 (200)
서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.
'개발 > python' 카테고리의 다른 글
[파이썬] Socket library를 활용하여, 네트워크 통신 테스트 소스코드 예제 (2) | 2024.05.01 |
---|---|
IT비전문가인 제가 학습한 파이썬 테크트리 에 대해 알아보자 (IT비개발자 집중!!) (1) | 2024.04.15 |
[python][라이브러리] Faker 모듈에 대해 알아보자(feat. 자네 가라 데이터가 필요한가?) (2) | 2020.12.11 |
- Total
- Today
- Yesterday
- 피부당독소
- 40대추천넷플릭스
- tcpdump
- 핸드폰줄이기
- 디지털딕톡스실천
- 방화벽엔지니어
- 피부당독소자가진단
- 피부당독소배출
- 보안엔지니어
- 박보검아이유
- 3월헬스시작
- drax러닝
- python
- 폭싹속았수다원작
- 피부당독소음싣
- 폭싹속았수다촬영지
- 다이어트100일기록
- 봄헬스장이용
- 넷플리스신작
- 폭싹속았수다등장인물
- 핸드폰안보기
- 디지털딕톡스
- 파이썬
- 무쇠가무녀졌다
- 폭싹속았수다줄거리
- 피부당독소음식
- 눈뜨자마자핸드폰안보기
- IPS
- 당독소원인
- 제주지기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |