-
크롤링이란?
인터넷에 데이터가 방대해지면서 우리는 그걸 활용할 필요성이 높아졌다. 그런 정보들을 우리가 분석하기 쉽고 활용하기 쉽게 끔 데이터를 수집하는 행위를 크롤링(Crawling) 이라고 하고 크롤링하는 프로그램을 크롤러(Crawler) 라고 한다.
원하는 데이터를 추출하는 스크래핑(Scraping)과 개념이 혼동되기도 한다.
크롤링의 정확한 정의는 다양한 웹사이트의 페이지를 브라우징하는 작업을 말합니다.
그런데 사실상 정보를 수집하기 위해선 브라우징만 하지 않는다. 페이지 안에 있는 데이터를 추출해서 가공하는게 대부분 최종 목표이다. 결국 크롤링 => 스크래핑의 과정으로 넘어간다. 그래서 이 두 개념이 혼용될 수 있다.
크롤링을 위해서 파이썬이라는 언어를 사용하고 주로 웹페이지에서 데이터를 모아오는 작업을 수행한다.
크롤링은 웹 상의 페이지를 수집하고 분류하는 작업을 하는데 자동화된 로봇들이 웹사이트를 수집, 분류하고, 이후 수집, 분류한 데이터를 저장한 후 나중에 쉽게 찾을 수 있도록 '인덱싱'하는 작업을 진행한다.
크롤링의 원리
크롤링의 원리를 알려면 먼저 웹페이지의 구성을 알아야 한다.
웹페이지는 HTML문서로 작성되어 있다. 그리고 이 문서에는 인터페이스를 참조할 수 있는 CSS파일과 페이지 상호작용을 위한 JavaScript파일을 참조할 수 있다.
HTML을 사용하면 문서를 작성할 수 있고, CSS를 참조하면 디자인을 활용할 수 있으며, JavaScript를 참조하면 상호작용이 가능해진다 우리는 모든 웹페이지의 HTML 문서를 확인할 수 있다. 그리고 HTML 문서에 어떤 CSS 문서가 참조 되었는지, 어떤 내용이 들어가 있는지 확인할 수 있다.
그리고 우리는 크롤러를 만들 때, HTML 태그등을 찾아서 원하는 데이터를 추출할 수 있다.
HTTP 는 서버(server)와클라이언트(client)의 대화이다. 여기서 서버는 django, Spring 등으로 구현한 백앤드, 클라이언트는 웹 브라우저라고 이해하면 된다. 대화를 하는 방식은 클라이언트가 서버에 요청(request)을 하고, 서버는 그 요청에 대한 반응(response)을 돌려주는 식이다. 여기서 요청이라고 하는 것은 어려워 보이지만 우리가 평소에도 아주 쉽게 하고 있다. 예를 들면 웹페이지에 접속하기, 새로고침, 링크 클릭 등이 있다. 이렇게 URL을 통해 요청을 보내면 server는 이에 맞는 응답을 하는데 응답 역시도 친숙하다. 웹 화면을 보여주는 html 파일, 이미지 등의 응답을 하게 된다.
크롤링은 HTTP프로토콜로 통신을 한다. 크롤링할 대상들은 웹에 존재하니 당연한 이야기다. 그렇기 때문에 python 만으로는 불가능하고 웹 브라우저가 이를 도와줘야한다. 물론 이 역시 라이브러리를 통해 웹의 도움을 받을 수 있다.
크롤링을 구현하기 위해서는 request,selenium,API 등이 있다. 첫번째와 두번째는 python의 라이브러리를 통해서, 3번은 instagram, 네이버 블로그 검색 등 이미 구현된 API를 가져다가 쓰는 방식이다.
- request 는 html에 찾고자하는 부분이 있을 경우에 사용한다.
- selenium 은 응답되는 html 에 없고 그 뒤로 수행되는 javascript 를 통해 처리될 경우,로그인이 필요한 경우에 사용
[참고]