본문 바로가기

Python/Python Basics

파이썬 웹 크롤링 마스터하기-1 requests 모듈, HTTP Request란?

* HTTP Request란?

: HTTP는 Hyper Text Transfer Protocol의 줄임말입니다. 즉 Hyper Text 형식으로 주고 받는 Protocol이다. Transfer Protocol은 한국어로 통신 규약이라고 할 수 있는데, 이 또한 무슨 소리인지 잘 이해가 안 될 거예요. 쉽게 말하면 그냥 주고 받는 형식이나 양식이라고 보시면 됩니다.

예를 들자면, 어떤 통신 규약의 이름이 "편지 프로토콜"이고 이 프로토콜은 "수신자", "내용", "발신인" 등등을 기본적으로 갖고 있다고한다면, 이 프로토콜로 주고받는 데이터는 모두 저 내용을 갖고 있는 겁니다. HTML 을 예로 들면 body, head, method 등을 갖겠네요.

 

가장 빠르고 간편하게 HTTP Request를 확인하는 법

크롬 기준으로 그냥 지금 이 웹페이지에서 F12를 누르고 나타나는 탭에서 Network를 들어가셔서 나타나는 항목 중 아무거나 눌러보셔서 Headers를 눌러보시면 대충 HTTP request에 대해 한 눈에 볼 수 있어요.

 

* HTTP Request 의 종류

: 우리가 보통 인터넷에 접속해서 페이지를 띄울 때에는 GET 방식을 이용해 페이지를 띄워요.

예를 들어 https://www.naver.com/이라는 네이버의 홈페이지에 우리가 접속한다는 것은

    1. https:www.naver.com/ 의 서버에게 GET 방식으로 요청을 보낸다. ( 저 접속했어요! 반응으로 데이터를 넘겨주세요 ! )

    

    2. 서버에서 반응으로서 html 파일 등을 보낸다. ( 네 요청에 맞는 반응을 전송해주겠다 )

    3. 클라이언트는 서버에게서 받은 반응을 웹브라우저를 통해 본다. ( 꼭 웹브라우저일 필요는 없는데, 일반적으론)

 

보통 위의 경우엔 GET 방식을 이용해 통신을 하는데, 이외에는 주로 GET, POST, PUT,등등이 있는데, 이 글을 읽는 분들 같은 경우에는 설명이 많아져봐야 이해하기 어려울 것이라 예상하고, GET, POST 이외의 내용은 다루지 않겠습니다.

POST 방식은 주로 ajax로 처리하거나 form을 제출할 때 이용합니다. 크롤링 자체를 배운 뒤 감을 잡고 나서 http method를 비교해도 되지만, 혹시 궁금하신 분들이 있을까싶어 요약하자면, GET방식URL에 서버에게 넘겨주고자 하는 인자들과 그 값이 드러나 보안에 좀 더 취약한 편이고, 넘기는 인자의 길이에 제한이 있지만, POST는 URL에 인자들과 그 값이 드러나지 않고, 인자의 길이 제한이 없습니다. 인자가 숨겨져서 전달되는 셈. 브라우저에서는 기본적으로 주소창을 통해 하는 접속은 GET 방식을 이용합니다. (e.g. 구글에 주소창으로 접속하거나, 네이버에 주소창으로 접속하는 식) 

 

한 줄로 요약하자면, 크롤링을 배우는 동안은 GET 방식과 POST 방식만 우선 알면 되고, 얘네의 차이 및 특징은 예제를 진행하면서 배우면 될 것 같아요.

 

* requests 모듈이란?

: requests 모듈이란 위에서 설명한 HTTP Request를 웹 브라우저가 아닌 python에서 모듈로서 가능하게 해주는 모듈입니다. 언어 별로 각각 이렇게 HTTP Request를 편리하게 할 수 있게 도와주는 모듈들이 있는데,

requests 모듈에 대해 한 마디로 표현하자면, 파이썬에서 HTTP 관련된 작업을 편리하게 할 수 있도록 해주는 모듈이고, 그러한 작업을 하는 모듈이 수 없이 많겠지만, 이 녀석이 가장 잘 나가기 때문에, 이 녀석으로 공부를 진행할게요.

* requests 모듈 사용 예시

간단히 request 모듈을 이용한 예시를 보여드리자면,

현재 글에  _-_requests module test_-_  라는 내용을 포함시키고

이 글에 GET 방식으로 http 요청을 보낸 뒤 받아온 html파일에서

"_-_"을 이용해 split하면 아마 requests module test라는 str을 얻을 수 있겠죠??

따라서 아래 소스코드를 올바르게 실행해서 requests module test 라는 output이 출력되면 성공인겁니다!