Hyesung Oh

#python#crawling - get, post 차이 이해 및 post 방식 동적 크롤링 실습 [1] 본문

DEV/Python

#python#crawling - get, post 차이 이해 및 post 방식 동적 크롤링 실습 [1]

혜성 Hyesung 2019. 8. 22. 21:03
반응형

<서론>

GET방식 크롤링과 비교했을 때, 조금더 고난이도 크롤링 작업에 필요한 방식이 바로 POST 방식입니다.

동적 크롤링이라는 말을 들어 보셨을 것입니다. 이는 해당 웹페이지에서 '조회하기' 와 같은 버튼을 눌렀을 때 화면은 변하지만 웹페이지 상단의 URL은 변하지 않을 때 사용하는 크롤링 방식입니다. 

흔히 selenium 과 같은 자동화 방식을 사용하여 크롤링을 하지만, 이는 로컬 환경에 따라 제약 변수가 많습니다.

REST API에 대한 간단한 이해를 바탕으로, GET, POST 방식을 사용하여 더욱 간단하게 크롤링을 할 수 있습니다.

 

<본론>

웹 개발을 할 때 공부해야할 것 중 하나가 바로  REST API라 생각합니다.

오늘은 REST API의 GET 과 POST에 대해 알아보고 이를 이용한 크롤링 실습까지 소개하고자 합니다. GET,POST 외에 DELETE, PUT 도 있습니다만 이번 글에서는 GET, POST 에 대해서만 다루도록 하겠습니다.

설명을 하기에 앞서 가장 먼저 짚고 넘어가야 할 것이 있습니다. 바로 API 가 무엇인지 이해를 하는 것입니다.

API

구글링을 해보면

API(Application Programming Interface)란
: 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것

하지만 위와 같은 정의는 웹에 대해 처음 접하시는 분이라면 다소 생소할 수 있습니다.

따라서 저는 API 를 다음과 같은 비유로 설명하고자 합니다.

Client API Server
사용자 키보드 모니터

우리는 모니터에 글자를 출력하고 싶을 때 키보드를 사용합니다. 이때 우리는 복잡한 컴퓨터 하드웨어, 소프트웨어에 대한 이해를 바탕으로 글자를 출력하는 것인가요?

아닙니다. ㄱ 을 출력하고 싶으면 키보드 ㄱ 버튼을 누르기만 하면 됩니다. 이러한 기능을 해주는 것이 바로 API 라는 것입니다.

서버에서 우리가 어떠한 정보를 받아오고 싶을 때, 보내고 싶을 때 client 는 backend 개발자가 설계해놓은 API(키보듣) 사용법을 익히기만 하면 그 형식대로 서버와 소통할 수 있는 것입니다. 그 사이에서 일어나는 일련의 process 에 대해서는 client 에게 노출이 되지 않아 알 수 없습니다. 그저 개발자가 원하는 방식대로 형식을 만들어서 요청을 하고 우리가 원하는 정보를 받아올 뿐입니다. 

차이점이 있다면 글자를 출력할 때는 손가락으로 키보드를 누르는 것이고, 서버와 소통할 때는 code 를 통해 키보드(API)를 눌러주는 것이라 생각하면 이해하기 쉬울 거 같습니다. 

REST API

API는 개발자가 자신이 원하는 형태로 설계할 수 있습니다. 그 중에서도 대표적으로 널리 통용되는, 꼭 알고 넘어가야 하는 API중에 하나가 REST API 입니다. 

REST API에 대해 설명하자면 REST 에대한 이해 부터 시작하여 공부할 것이 조금 있습니다. REST API에 대해 조금더 공부하고 싶으신 분들은 아래 gmlwjd9405 님의 블로그를 참고하시면 좋을 것 같습니다.

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

 

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

저는 이번 크롤링 실습에서 사용하게 될 GET 과 POST 방식에 대한 이해에 조금더 초점을 두도록 하겠습니다. 

간단하게 설명하면 다음과 같습니다.

우리가 매일 접하는 네이버, 다음과 같은 사이트에서 상단의 URL 을 보시면 우리가 '피부과' 라는 검색어를 검색하고 싶을 때 https://search.daum.net/search?w=tot&DA=YZR&t__nil_searchbox=btn&sug=&sugo=&q=피부과 와 같이 URL에 우리가 원하는 정보를 결합하여 서버에 요청합니다. 이러한 방식이 바로 GET 방식입니다. 

 

GET 방식은 다음과 같은 특징이 있습니다.

- 클라이언트가 입력한 값이 URL과 결합되어 스트링 형태로 서버에 전달됩니다
- 서버의 DB에 정보를 요청하는 것이 아니라 해당 웹페이지에서 보여지는 그대로를 가져오는 것입니다.
- 한번 요청시 데이터 양에 제한이 있습니다.

이 방법이 이전 포스팅에서 했던 가장 기초적인 크롤링 작업이 되겠습니다. 

POST 방식은 다음과 같은 특징이 있습니다.

- 클라이언트와 서버 간에 스트링 형태로 그대로 서버에 전달되지 않고 인코딩이라는 과정을 거칩니다.
- 헤더를 통해 요청이 전송되는 방식입니다. 이 때문에 GET 방식과 같이 URL이 노출되지 않습니다.
- 요쳥시 GET 보다 더 많은 양의 정보를 교환할 수 있습니다.
- 페이지에서 날짜를 설정하고 조회하기 버튼을 눌렀을 때 서버는 DB에서 해당 기간에 해당되는 정보를 불러와 우리에게 보여줍니다.  이 때 사용하는 방식이 바로 POST 방식입니다. 조회하기 버튼을 눌렀을 때 URL 이 client 에게 노출이 되지 않으며, GET방식에 비해 더 많은 양의 정보를 받아올 수 있다는 장점이 있습니다. 

이전 포스팅에서는 GET 방식의 크롤링 작업을 소개해 보았습니다.

다음 포스팅엥서는 POST 방식을 이용한 크롤링 작업을 소개하겠습니다.

 

반응형
Comments