컴퓨터에 관심이 있는 사람이라면 누구나 한 번쯤은 크롤링이라는 단어를 들어본 적이 있을 것이다.
직접 구현을 해본 경험을 가진 사람도 있고, 그냥 이런 기술이라는 것만 알고 있는 사람일 수도 있다.
나 역시 후자에 속해있었는데, 크롤링을 통해 데이터를 수집하는 것만 알고 있었고 정확한 개념을 몰랐는데, 우연히 크롤링을 해볼 기회가 생겨서 일단 크롤링이 무엇인지를 알기 위해 인터넷에서 정보를 찾기 시작했다.
그러던 도중에 크롤링에 대한 정보와 스크래핑에 대한 정보를 보게 되었고, 뭔가 서로 밀접하게 관련되어 있지만, 용어를 잘못 사용한다던지, 잘못 이해하고 있는 사람들이 많다고 하기에 내가 정보를 바탕으로 정리를 해보려고 한다.
1. 크롤링(Crawling)이란?
나무위키에 있는 정의를 따른다면 크롤링은 크롤링 혹은 스크래핑이라고도 하는데?? 웹 페이지를 그대로 가져와 그 곳에서 데이터를 추출하는 행위를 말한다(수집과 분류를 의미). 이때 크롤링을 위한 소프트 웨어는 크롤러(Crawler)라고 한다. (데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주 목적이라고 함.) 가끔은 크롤링이라는 단어를 스파이더링이라고도 한다고 합니다.
- 웹상에 존재하는 콘텐츠를 수집하는 작업.
- HTML 페이지를 이용한 HTML/CSS를 파싱, 필요한 데이터만 추출
- Open API를 제공하는 서비스에서 Open API를 호출해, 받은 데이터 중 필요한 데이터만 추출하는 기법
- Seleniu등 브라우저를 프로그래밍으로 조작해 필요한 데이터만 추출하는 기법
2. 크롤링의 원리는?
크롤링의 원리를 알기 전 우리가 일상에서 사용하는 웹 페이지의 구성을 알아야 하는데, 웹 페이지는 HTML 문서와 CSS, JavaScript로 구성되어 있다. 이때 크롤러를 만들때 HTML 태그 등을 찾아서 원하는 데이터를 추출할 수 있는데, 예시로 웹 페이지에서 음식 목록을 크롤링 하려고 한다면 '음식'이라고 검색된 페이지의 HTML 문서를 확인하면 해당 사용 태그를 알 수 있고, 원하는 데이터를 추출하기 위해 HTML 문서를 확인하는 작업을 통해 소프트웨어의 힘을 빌려 데이터를 추출할 수 있도록 크롤러를 만들면 된다.
참고:Google 검색의 원리 | 크롤링 및 색인 생성
3. 크롤링의 종류
- 정적 크롤링 ( 정적인 데이터를 수집하는 방법으로, 변하지 않는 데이터를 의미한다. 속도는 빠르지만 수집 데이터에 대한 한계가 존재한다.)
- 동적 크롤링 (동적인 데이터를 수집하는 방법으로, 입력, 클릭, 로그인 등과 같은 페이지 이동이 있어야 보이는 데이터를 의미한다. 다양한 데이터를 수집이 가능하지만 당연히 속도는 느리다.)
4. 문제점
데이터의 가치가 점점 늘어나고 기업들은 데이터를 통한 다양한 산업을 진행중이다. 이에 따라 이 크롤링이라는 행위가 법적으로 문제가 될 수 있다는 점을 알아야 한다. 특정한 웹 사이트의 콘텐츠를 무단으로 사용해 금전적인 이득을 얻으려는 것은 데이터 베이스 침해 행위라는 대법원의 판결이 난 적이 있다. (이것 이외에도 다양한 판례들이 많음.)
法 “여기어때, 야놀자 정보 무단수집 맞다”...前 대표 ‘유죄’ - ZDNet korea
https://biz.chosun.com/site/data/html_dir/2020/09/23/2020092300325.html
5. 내 생각을 정리하며 이번 포스팅의 총 정리
결국 특정한 웹 사이트에 있는 정보를 함부로 긁어다가 상업적으로 이용하면 법적으로 문제가 생길 수 있다는 점을 인지해야하며,
결국 크롤링을 사용함에 있어 내가 원하는 데이터를 탐색하고, 조건에 따라 데이터를 수집, 저장하기 위한 모든 일련의 자동화를 크롤링이라 말하며, 크롤링을 하는 것은 불법이 아니지만 데이터를 사용해 상업적으로 이용하는 경우나, 상대의 서버에 문제를 일으킨 경우 등 여러 부분에 있어서 문제를 일으키게 될 경우 법적으로 책임을 져야할 수 있다.
크롤링과 스크래핑은 비슷한 의미를 가지는 것 같지만, 실제론 명확히 구분되어야 한다고 한다.
원칙적으로 크롤링은 탐색에 그 기능이 제한되 의미를 갖고 있지만, 스크래핑은 정보의 추출에 초점을 맞추고 있기 때문이다. 어떻게 보면 내가 생각하기엔 스크래핑이 큰 틀이라 생각하고, 크롤링이 조금 더 작은 범주이지 않나 싶다. 그 이유는 크롤링이 우선적으로 기반이 되어야 스크래핑이 될 것이기 때문이다. (물론 둘 개념이 매우 비슷해서 같이 쓰는 경우도 비일비재하다고 함...)
크롤링은 여러 사이트를 돌아다니며 필요한 데이터를 수집하며, 스크래퍼는 특정 사이트에서 고정된 형상에서 데이터를 가지고 오는 것.
다양한 라이브러리와 툴이 있으니 관심이 있다면 한 번 알아보는 것도 좋을 것 같다.
<참고>
이렇게 하면 불법인지 아닌지, 사이트가 허락하는지 허락하지 않는지 알 수 있다고 함
사이트의 이름 뒤에 robots.txt를 통해 파일을 열어보면 확인이 가능함.
https://namu.wiki/w/robots.txt
https://developers.google.com/search/docs/advanced/robots/robots_txt?hl=ko
'기술면접 관련 및 참고하기' 카테고리의 다른 글
HTTP는 뭔데요? ( CS 특강 - HTTP/HTTPS/통신 흐름, TLS/SSL 등) - 작성 중 (0) | 2022.11.25 |
---|---|
운영체제(Operating System) 프로세스(Process)와 쓰레드(Thread) - 우테코 Tech 내용 추가 (2022.12.02) (1) | 2022.11.19 |
자바는 어떻게 메모리를 사용할까요? (자바의 메모리 사용) (0) | 2022.11.17 |
라이브러리? 프레임워크? what is that? (0) | 2022.03.06 |
Java와 C계열의 차이점 (0) | 2022.01.16 |