<이미지 출처>
크롤링 차근차근 시작하기, EDA (Exploratory Data Analysis) 개념 및 종류
1. EDA
01. EDA란?
(1) 정의
- EDA(Exploratory Data Analysis, 탐색적 데이터 분석)
- 통계학자인 John Tukey (1977)가 그의 저서 Exploratory Data Analysis에서 처음 도입 (데이터를 다양한 각도에서 관찰하고 이해하는 모든 과정을 말한다고 함)
=> 한마디로 데이터를 분석하기 전에 그래프나 통계적인 방법으로 자료를 직관적으로 바라보는 과정
(2) EDA의 필요성
<EDA (탐색적 데이터 분석)를 하기 위한 데이터 수집 및 정제 과정>
⚙ 데이터 수집 → 데이터 전처리 → 순수 데이터 → EDA (탐색적 데이터 분석)
- 데이터 분석에 있어서 매우 중요한 초기 분석 단계이며,
데이터를 분석하고 결과를 내는 과정에 있어 지속적으로 해당 데이터에 대한 "탐색과 이해"를 기본으로 가져야 함
- 데이터의 분포 및 값을 검토함으로써 데이터가 표현하는 현상을 더 잘 이해하고, 데이터에 대한 잠재적인 문제를 발견할 수 있음
이를 통해, 본격적인 분석에 들어가기에 앞서 데이터의 수집을 결정할 수 있음
- 다양한 각도에서 살펴보는 과정을 통해 문제 정의 단계에서 미쳐 발생하지 못했을 다양한 패턴을 발견하고, 이를 바탕으로 기존의 가설을 수정하거나 새로운 가설을 세울 수 있음
1) EDA의 목적
- 데이터를 분석하는 분석자의 가설을 정형화하고 세분화하는 것을 돕기 위함
2) EDA의 핵심 목표
- 관측된 현상의 원인에 대한 가설을 제시
- 적절한 통계 도구 및 기법의 선택을 위한 가이드
- 통계분석의 기초가 될 가정을 평가
- 추가 데이터 수집을 위한 기반 제공
3) EDA의 이점
- 데이터의 잠재적인 문제 발견
- 데이터의 다양한 패턴 발견
- 자료수집을 위한 기반 (추가 자료수집도 포함)
- 적절한 통계 도구 제시
4) EDA의 방법론
- 수치적 및 시각적 분석 방법을 모두 포함
- EDA를 위해 종종 통계방법이 사용될 수 있지만, EDA는 통계모델링을 하기 전에 데이터에 대한 이해를 돕기 위해 실시
(3) EDA의 중요성
- “데이터를 분석하는 데, 분석을 위한 데이터를 준비하는 데 80%의 시간을 보내며, 이후의 20%는 분석 데이터에 대한 불평을 하는데 사용된다.”
EDA는 데이터를 분석하여 결과를 도출하는 전체 과정에서 대부분을 차지함
- 통계분석은 궁극적으로 데이터에 내포된 변수간의 관계인 통계모형을 찾아내고, 그 통계모형을 통해 미지의 현상을 예측하는 것, 통계분석을 제대로 수행하기 위해서는 분석모델링 전에 데이터에 대한 이해가 필수적
(4) EDA의 단계
- 기본적인 출발점은 문제 정의 단계에서 세웠던 연구 질문과 가설을 바탕으로 분석 계획을 세우는 것
- 분석 계획에는 어떤 속성 및 속성 간의 관계를 집중적으로 관찰해야 할지, 이를 위한 최적의 방법은 무엇인지가 포함되어야 함
- 전체적인 데이터 분석
☞ 분석의 목적과 목적에 맞는 변수가 무엇인지
☞ 데이터형 확인/ 데이터의 오류나 누락이 없는지 (데이터에 문제가 없는지 확인)
☞ 추가적으로 다양한 탐색 (이상치, 결측치 등을 확인하는 과정)
- 데이터에 이상치가 있으면, 이상치가 왜 발생했는지 의미를 파악하는 것이 중요 → 그러한 의미를 파악했으면 어떻게 대처해야 할지(제거, 대체, 유지 등)를 판단해야 함
<이상치를 발견하는 대표적인 방법들>
① 개별 데이터 관찰
- 데이터값을 눈으로 쭉 훑어보면서 전체적인 추세와 특이사항을 관찰할 수 있음
- 데이터가 많다고 앞부분만 보면 안 되고, 인덱스에 따른 패턴이 나타날 수도 있으므로 앞, 뒤 or 무작위로 표본을 추출해서 관찰해야 함
- 단, 이상치들은 작은 크기의 표본에 나타나지 않을 수 있음
② 통계 값 활용
- 적절한 요약 통계 지표(summary statistics)를 사용할 수 있음
- 데이터의 중심을 알기 위해서는 평균(mean), 중앙값(median), 최빈값(mode)을 사용할 수 있고 데이터의 분산을 알기 위해 범위(range), 분산(variance)을 사용할 수 있음
- 통계 지표를 이용할 때는 데이터의 특성에 주의해야 함
예) 평균에는 집합 내 모든 데이터 값이 반영되기 때문에, 이상치가 있으면 값이 영향을 받지만, 중앙값에는 가운데 위치한 값 하나가 사용되기 때문에 이상치의 존재에도 대표성이 있는 결과를 얻을 수 있음
③ 시각화 활용
- 일단은 시각적으로 표현이 되어있는 것을 보면, 분석에 도움이 많이 됨
- 시각화를 통해 주어진 데이터의 개별 속성에 어떤 통계 지표가 적절한지 결정할 수 있음
- 시각화 방법에는 확률밀도 함수, 히스토그램, 점 플롯(dotplot), 워드 클라우드, 시계열 차트, 지도 등이 있음
④ 머신러닝 기법 활용
- 대표적인 머신러닝 기법으로 K-means를 통해 이상치를 확인 할 수 있음
⑤ 그 외의 이상치 발견 기법들
-
데이터의 개별 속성값 관찰
☞ 각 속성 값이 예측한 범위와 분포를 갖는지 확인. 만약 그렇지 않다면, 이유가 무엇인지를 확인
☞ 개별 데이터를 관찰하며 전체적인 추세와 특이사항 관찰
☞ 적절한 요약통계 지표 사용 (평균, 중앙값, 분산 등)
☞ 시각화를 통해 데이터의 개별 속성에 어떤 통계 지표가 적절한지 결정
-
속성 간의 관계분석
☞ 이 과정의 목표는 서로 의미 있는 상관관계를 갖는 속성의 조합을 찾아내는 것
☞ 속성 간의 관계에 초점을 맞추어, 개별 속성 관찰에서 찾아내지 못했던 패턴을 발견 (상관관계, 시각화 등)
☞ 그래프를 통해 시각화하여 속성 간의 관계 분석
☞ 상관계수를 통한 상관관계 확인
☞ 여기서부터 사실상 본격적인 탐색적 분석이 시작됨
<분석의 대상이 되는 속성의 종류에 따른 방법>
1. Categorical - Categorical
☞ 교차 테이블, 모자이크 플롯을 이용해 각 속성 값의 쌍에 해당하는 값 개수를 표시할 수 있음
2. Numeric - Categorical
☞ 각 카테고리별 통계 값(평균, 중간값 등)을 관찰할 수 있음
이를 박스 플롯을 통해 시각적으로 표현할 수 있음
3. Numeric - Numeric
☞ 상관계수를 통해 두 속성 간의 연관성을 나타낼 수 있음
-1은 두 속성이 반대 방향으로 변하는 음의 상관관계를 나타내며, 0은 상관관계없음을 나타내고, 1은 두 속성이 항상 같은 방향으로 변하는 양의 상관관계를 나타냄
→ 상관계수를 갖는 두 속성의 관계도 다양한 양상을 띨 수 있는데, 스케터 플롯을 이용하여 이를 시각적으로 표현할 수 있음
→ 또, 분석을 하다 보면, 2개 이상의 속성 간의 관계를 보고 싶을 때가 있는데 그럴 땐 위에서 나타낸 그래프를 3차원으로 표현하거나, 그래프 위에 표현된 점을 색상을 이용하거나 모양을 달리하여 더 많은 속성을 나타낼 수 있음
→ 각 점을 텍스트로 표현할 수도 있을 것
✔ 통계치 분석
1) 이상치
- 이상치는 관측된 데이터의 범위에서 많이 벗어난 아주 작은 값이나 큰 값을 말함
<다양한 이상치의 기준을 정하는 방법 중 2가지>
① 표준편차 (Standard Deviation)
☞ 우리가 잘 알고 있는 표준편차를 활용해 이상치를 탐지하는 방법
=> 데이터의 분포가 정규 분포를 이룰 때, 표준편차 범위를 벗어나면 이상치로 간주
② IQR
☞ IQR은 EDA(탐색적 데이터 분석)를 개발한 John Tukey가 만든 이상치 검출 방법
=> 정규분포를 이루지 않을 때 활용 가능한 방법
2) 결측치
- 결측치는 관측되어야 할 값을 얻지 못한 데이터로, 전처리 단계에서 적절한 값으로 처리가 필요
<결측치 유형>
- 결측치의 유형에는 완전 무작위 결측, 무작위 결측, 비무작위 결측이 있음
① 완전 무작위 결측(MCAR) :
→ 결측치가 다른 변수들과 아무런 상관관계가 없는 경우
② 무작위 결측(MAR) :
→ 특정 변수와 관련되어 누락됐지만, 변수들의 상관관계를 알 수 없는 경우
③ 비무작위 결측(NMAR) :
→ 누락된 변수의 값이 누락된 이유와 관련이 있는 경우
예) 성별을 통해 체중을 예측하는 모델을 구축하기 위해 설문조사를 한다고 가정했을 때,
📋 단순히 응답하지 않았거나 응답이 누락된 경우 → 완전 무작위 결측에 해당
📋 만약 다수의 여성이 체중을 설문조사에서 응답하지 않았다고 했을 때,
성별의 영향으로 체중에 대해 응답을 하지 않았지만 성별과 체중은 아무런 관련이 없기 때문에 → 무작위 결측에 해당
📋 만약 체중이 무거운 사람들이 자신의 체중을 설문조사에 응답하지 않았다고 했을 때, 체중에 대한 응답이 누락된 것이 체중 자체에 영향을 받았기 때문에 → 비무작위 결측에 해당
<결측치 처리 방법>
- 결측치를 처리하는 방법으로는 크게 제거법, 단일대체법, 다중대체법이 있음
✎ 다중대체법
- 1단계 : 각각의 결측치를 일정한 알고리즘에 따라 다른 대체값으로 대체한 m개의 데이터셋 생성
- 2단계 : m개의 완전한 데이터셋을 각각 분석하고, 각 데이터셋의 모수의 추정치와 표준오차 확보
- 3단계 : 각 데이터셋의 결과를 Rubin's rule에 의해 결합
※ Rubin's rule 이란?
- 각 데이터셋 별로 구한 추정치와 표준오차에서 추정치의 결합은 각 데이터셋으로부터 구한 추정치의 평균으로 정의
- 추정치의 분산은 대체내 분산 W와 대체간 분산 B의 결합값으로 정의
→ SAS에서는 여러 개의 다중대체된 데이터셋의 결과를 결합할 때, 'PROC MIANALYZE'프로시저를 사용
3) Shape/ min,max,mean/ dtype
- Shape : 머신러닝에서 행렬의 차원을 표현하는 개념
- Dtype : 정수형(int64), 실수형(float64), 부울형 (bool) 날짜표현 (Datetime64), 카테고리 (Categoty) 문자열/복합형 (Object)
- Min : 최소값, 널값이 있으면 널값 반환
- Max : 최대값
- Mean : 평균
(5) EDA의 기반이 되는 기본 개념
1) EDA의 대상(타겟)
- Univariate(일변량)
☞ EDA를 통해 한 번에 파악하려는 변수가 1개.
☞ 데이터를 설명하고 그 안에 존재하는 패턴을 찾는 것이 주요 목적
- Bivariate (multi-variate)(다변량)
☞ EDA를 통해 한 번에 파악하려는 변수가 여러 개
☞ 여러 변수들간의 관계를 보는 것이 주요 목적
☝ 일변량의 경우
- 독립변수에 하나의 종속변수가 있는 것
- 일변량 분석 : 어떤 대상의 성격을 규명하기 위하여 한가지 측면에서 그 대상을 관찰하고 분석하는 것에 유용
🤲 다변량의 경우
- 여러 개의 독립변수에 여러 개의 종속변수를 동시에 분석하는 것
- 다변량 분석 : 여러 각도와 측면에서 변수들의 관계를 분석하는 것에 유용
2) EDA의 종류
- Graphic(시각화)
☞ 차트 혹은 그림 등을 이용하여 데이터를 확인하는 방법
→ 데이터를 한눈에 파악하여 대략적인 형태 파악 가능
- Non-Graphic(비시각화)
☞ 그래픽적인 요소를 사용하지 않는 방법으로, 주로 Summary Statistics를 통해 데이터를 확인하는 방법
→ 정확한 값을 파악하기 좋음
※ Summary Statistics : 요약통계량
→ .describe() 함수를 사용하면 평균, 중앙값, 최대/최소값 등 데이터의 컬럼별 요약 통계량을 볼 수 있음
∴ 비시각화의 경우, 시각적인 지표 없이도 요약통계량을 통해
대략적인 데이터의 분포를 유추하고 정확한 값을 파악하기 좋음
3) EDA의 유형
☞ EDA의 타켓과 종류를 하나씩 연결한 것으로, 총 4가지의 유형이 나옴
- Uni-Non Graphic(일변량 비시각화) :
주어진 데이터의 Distribution을 확인하는 것이 주목적.
- Uni-Graphic(일변량 시각화) :
주어진 데이터를 전체적으로 살펴보는 것이 주목적.
- Multi-Non Graphic(다변량 비시각화) :
주어진 둘 이상의 변수간 관계를 확인하는 것이 주목적.
- Multi-Graphic(다변량 시각화) :
주어진 둘 이상의 변수간 관계를 전체적으로 살펴보는 것이 주목적.
4) 변수의 역할:
- Outcome variable : 결과변수
- Explanatory variable : 원인변수
5) 변수의 유형
- 범주형(Categorical variable), 이진형(Binary), 순서형(Ordinal), 명목형(Nominal), 양적변수(Quantitative or numeric variable), 이산형(Discrete), 연속형(Continuous)
✔ 데이터는 수치적인 요약과 그래프를 통해 살펴봄으로써 쉽게 이해할 수 있음
- 수치적인 요약 (기술통계) : 평균(Mean), 중앙값(Median), 최빈값(Mode)
표준편차(Standard Deviation), 분산(Variance), 사분위수범위(Interquartile Range), 첨도(Kurtosis), 왜도(Skewness)
- 그래프에 의한 요약 (Graphical methods) : Histogram, Density estimation, Quantile-quantile plot, Box plots, Scatter plots
2. 웹크롤링
01. Web Crawler
- 웹 크롤러란 자동화된 방법으로 웹(Web)에서 다양한 정보를 수집하는 소프트웨어임
- 원하는 서비스에서 원하는 정보를 편하게 얻어올 수 있음
- 언어를 막론하고 구현할 수 있지만, 주로 Python을 이용함
02. 웹크롤링
(1) 정의
- 크롤링(Crawling)이란 사전적으로 기어다니는 것을 뜻하는데, 전산쪽에서는 기본적으로 웹(World Wide Web)상에 존재하는 데이터를 자동적으로 탐색하는 행위를 의미
- 가끔 웹크롤링이 아니라 스파이더링이라는 단어를 사용할 때도 있음
(한 페이지만 방문하는 것이 아니라 관련 링크된 또 다른 페이지를 차례대로 방문하고 링크를 따라 여러 웹을 돌아다니는 모습이 마치 거미와 비슷해서)
✔ 종합해보면,
① 웹크롤러 : 웹상의 존재하는 데이터를 자동적으로 탐색할 수 있도록 특별한 시스템을 구축한 것
② 웹크롤링 : 그러한 웹크롤러를 통해 실제로 탐색행위를 실천하는 것
※ 사전적인 의미상 웹크롤링은 단순히 데이터를 탐색하는 행위만을 의미함
하지만 실제로 많은 개발자, 분석가, 데이터 과학자들이 웹크롤링을 수행하는 것은 단순 탐색을 위한 것이 아니라 데이터를 탐색, 원하는 조건에 맞는 데이터를 직접 수집하고 저장까지 하기 위한 목적이 큼
그렇기에 웹크롤링이라고 일반적으로 말하는 것은 데이터의 저장까지의 과정을 모두 포함함
=> 정확한 사전적의미와 실질적의미에 어느정도 차이가 있다고 볼 수 있음
(2) 크롤링 대상
- 앞서 언급된 크롤링의 정의에 따라, 크롤링의 대상은 웹상의 자원들
→ 이 자원은 정적인 문서가 될 수도 있고, API와 같은 서비스가 될 수도 있음 (어느쪽이던 다수의 데이터를 수집하고, 여기서 필요한 정보만 추출해서 처리하는 것이 크롤링)
예) 구글과 같은 검색엔진 : 웹 사이트의 정적인 데이터를 긁어다가 필요한 정보를 추출해서 검색 인덱스를 생성
가격 정보 비교 사이트 : 상품과 가격정보등을 긁어다가 서로 다른 쇼핑몰의 가격을 알려줌
<웹 크롤링으로 가져 올 수 있는 정보>
☞ HTML 기반의 웹 사이트, 이미지, 문서
(3) 크롤링 툴, 라이브러리 등 관련 소프트웨어
- 파이썬(Python)은 크롤링의 선두 주자로서, 컴퓨터 프로그래밍이 익숙하지 않은 비전공자들이 쓰기 쉽도록 라이브러리들이 발달하면서 급격히 발전하고 있음 (라이브러리를 통해 편리하게 크롤링 기능을 구현할 수 있음)
☞ 대표적인 파이썬 라이브러리의 예로 requests(페이지를 가져오기 위한 라이브러리), beautifulsoup(가져온 웹페이지를 기반으로 사용자가 원하는 데이터를 추출할 수 있도록 도와주는 라이브러리) 등이 있음
☞ 그외에도 브라우저를 이용한 selenium이라는 라이브러리가 인기를 끌고있음
☞ webdriver와 headless 옵션을 함께 이용해서 웹을 자동화 시킬수도 있음
☞ 자바 버전인 JSoup
=> 사실 어떤 툴이든 라이브러리를 사용하든 정보를 수집한다는 것은 변함이 없음 다만 자신의 필요에 맞게 사용하면 됨
(4) 크롤링 작용 원리
- 대략적으로 아래의 단계를 통해서 진행됨
① 대상 선정 → ② 데이터 로드 → ③ 데이터 분석 → ④ 데이터 수집
① 크롤링 대상 선정 (API 또는 웹 문서)
② 데이터 로드
- 데이터 로드는 웹 사이트를 켜는것과 같음
- 만약 API라면 XML, JSON 문서가 될 것이고, 웹 페이지라면 HTML 문서를 다운로드 받는 것
③ 데이터 분석
- 로드된 데이터에서 필요한 부분을 뽑아내는 것을 뜻함 (당연하게도 웹 사이트상에는 내가 필요로하지 않는 부분이 많음)
- 어떠한 부분을 수집할지, 어떤 부분을 수집하지 않을지 선정하는 과정
④ 수집
- 데이터 분석 과정을 통해서 수집할 내용을 선정했다면, 이를 추출하여 파일 또는 데이터를 메모리상에 저장하는 과정
(5) 웹크롤링 사용 예
- 특정 쇼핑몰 인기순위 top10 제품의 이름과 가격 가져오기
- 네이버 블로그 검색 결과 가져오기
- 특정 인터넷 기사의 기사 제목 가져오기
- 쿠팡 검색창에서 노트북 검색 후 상위 4개 상품의 상품명 가져오기
- 코드 검증 등 자동유지관리 작업
- 자동 이메일 집 등 특정 형태 정보 수집
- 기업의 고객정보 및 마케팅 정보, 금융 데이터, 국내 지리정보
- 챗봇 구현, 빅데이터 분석 연구, 검색 서비스
- 주식 암호화폐 등 시세 정보 모니터링, 쇼핑몰 품 정보, 도서검색 시스템 등
✔ 웹크롤링이 문제가 되는 경우
- 경우에 따라서 웹크롤링 수행이 불법으로 간주되는 경우가 있기 때문에 웹크롤링 수행이 문제가 되는 경우가 있음
- 사실 모든 케이스를 일일이 따져가며 특정 경우에 웹크롤링이 불법인가 아닌가에 대해 따져보는 것은 어려운 일
- 웹크롤링이 문제가 되는 경우를 판가름하는 몇 가지의 기준이 있고 이를 정확히 인지한다면 법을 잘 지키면서도 윤리적으로 웹크롤링을 이용할 수 있음
- 기본적으로 웹크롤링이라는 행위 자체를 불법이라 볼 수는 없음
=> 웹크롤링의 수행 프로세스를 실제로 보면 브라우저를 자동적으로 조정하여 데이터를 웹사이트에 요청하고 요청 내용에 해당하는 데이터를 웹사이트로부터 내려받는 것이 전부로 우리가 일반적으로 웹사이트를 이용하는 것과 기본적인 프로세스는 같기 때문에
- 하지만 실제 판례를 살펴보면 웹크롤링을 불법으로 규정한 경우가 있음
✎ 대표적인 사례로는 숙박업체들간의 DB무단수집사건이 있음
이형두(2020-02-11),여기어때, 야놀자 DB 무단수집 위법 판결…심명섭 전 대표 1심 집유 <전자신문 etnews>
☑ 해당 사례 요약 : 특정 숙박업체가 크롤링을 통해 경쟁사의 데이터를 수집하였다는 내용 (무단으로 경쟁사의 데이터를 수집하여 이를 자사의 데이터로 복제하였고, 그 과정에서 경쟁사 서버에 부담을 주는 행위가 있었음)
=> 이 사례를 통해 웹크롤링이 문제가 되는 대표적인 경우를 모두 알아 볼 수 있음
- 수집한 데이터를 상업적으로 이용하는 경우
위 사례에서는 해당 데이터를 활용함에 있어 문제가 있었음
수집한 데이터를 비즈니스 자체에 이용한다거나, 데이터 자체를 판매하는 등 웹크롤링을 통해 수집한 데이터를 금전적 이익을 목적으로 사용한다면 문제가 됨
※ 상업적 이용이 아닌 웹크롤링의 사례는 학술적 목적의 웹크롤링이 있음 ☞ 대표적인 학술적 목적의 웹크롤링 : 많은 학자와 학생들이 특정 현상을 분석하기 위해 웹상의 데이터를 수집 → 이를 분석하여 연구를 진행 → 해당 데이터를 이용하여 연구논문을 작성
=> 상업적 목적이 아닌 웹크롤링이 모두 문제가 안되는 건 아님
웹크롤링 행위 자체가 또 다른 문제를 일으킬 경우 웹크롤링이 불법이 될 수 있음
- 웹크롤링을 통해 상대 서버에 문제를 일으킨 경우
이 역시 숙박업체 간 불법 크롤링 사례에서 드러난 문제점
기본적으로 웹크롤링은 자동화한 프로그램을 통해 정보를 요청하기 때문에 데이터를 너무 많이 요청하게 되면 서버부하를 일으킬 수 있음
보통은 너무 많은 요청이 들어올 경우 웹사이트에서 자동적으로 요청을 중단시킴
하지만 악의적인 목적으로 이를 회피하는 알고리즘을 만들어 끊임없이 서버에 부하를 일으키는 것도 충분히 가능한 일
☒ 웹크롤링을 통해 데이터를 수집할 때 데이터가 쌓이고 저장되는 속도가 너무 느리다고 판단하여 고의적으로 서버에 부하를 줄 정도로 웹크롤링 알고리즘을 조작하는 것은 반드시 피해야 하는 행위
✔ 웹크롤링도 안전하게 할 수 잇음
- 웹크롤링을 진행하기 전 웹크롤링을 통해 행하고자 하는 작업이 어떤 목적을 지니고 있는지 나의 웹크롤링 행위가 상대방 서버에 영향을 미치지 않을지를 잘 고려해야 함
- 하지만 생각해보면 분명 각 웹사이트마다 크롤링 자체를 허용하는 정도가 분명히 다를 것임
=> 이를 잘 인지하고 있다면 데이터를 수집하는 입장에서 최대한의 데이터를 수집할 수 있음
∴ 데이터를 수집할 때 수집대상이 되는 웹사이트의 정책을 정확히 파악하는 것은 생각보다 중요한 사전 작업
<웹사이트별 규제 정책을 찾는 방법>
- 자동화 프로그램에 대한 규제
☞ 기본적으로 모든 웹사이트들은 자동화 프로그램에 대한 규제여부를 명시해놓고 있음
☞ 해당 내용에는 일반적인 금지사항이 아니라 각 웹사이트 특성을 반영한 규제여부를 알려줌
☞ 웹사이트의 특성과 상황을 고려하면 너무나 많은 경우의 수를 생각할 수 있기 때문에 각 웹사이트별로 자동화 프로그램에 대한 규제를 명확히 표시해둠
☞ 웹사이트별 자동화 프로그램에 대한 규제 내용은 웹크롤링을 포함하여 프로그래밍을 통해 특정한 자동화 프로그램을 만들었을 때 이 프로그램을 웹사이트에 적용해도 되는지 아닌지에 대한 여부를 알려주는 하나의 지표역할을 함
☞ 크롤링을 잘 사용하면 좋지만 악용하여 정보를 무단으로 복제할 경우 지식재산권 침해 사례가 발생함
☞ 이를 방지하기 위해 웹 페이지마다 크롤링을 제한하는 규약이 표시되어 있음
✔ 접근을 허용하는지에 대한 여부는 어떻게 확인할까?
- 각 웹사이트는 robots.txt라는 텍스트파일로 해당 정보를 저장하며 명시하고 있음
→ robots.txt는 브라우저 화면에서 바로 열어볼 수도 있고, 파일로 다운로드해 익숙한 메모장 프로그램을 이용해 열어볼 수도 있음
- 최상위 도메인주소 뒤에 /robots.txt를 입력하면 접근 허용 여부 컨텐츠를 확인할 수 있음 (txt파일이 자동으로 내려받아지거나 바로 robots.txt 정보가 브라우저 상에 노출되게 됨)
☞ 다만 robots.txt의 내용이 우리가 무조건 지켜야 하는 법적효력이 있는 내용은 아니며 권고안 정도의 의미를 담고 있음
☞ 웹사이트별로 특정 페이지마다 웹크롤링의 접근 허용 여부를 기록해 놓은 것은 해당 서버와 데이터를 안전하게 보호하기 위한 목적이 있기 때문에 robots.txt에 담긴 내용이 강제성이 없다고 할지라도 이를 무시하고 웹크롤링을 실시하는 것은 절대 추천하지 않음
=> 혹여, 추후 웹크롤링때문에 문제가 생긴다 할지라도 그 대부분의 경우는 robots.txt에 명시적으로 자동화프로그램의 접근을 제한한다고 표시되 있는 경우가 많음
<웹사이트별 규제정책 읽는 방법>
- robots.txt에 담겨있는 내용은 모든 웹사이트마다 그 형식과 구조가 똑같음 또한 해당내용은 어려운 코드로 구성된 것이 아니라 직관적으로 이해하기 쉬운 몇 몇개의 단어로 이루어져 있기에 조금만 robots.txt내용 해석을 시도하다보면 웹크롤링 입문자도 쉽게 자동화프로그램 규제여부를 파악할 수 있음
- User-agent, Allow와 Disallow
☞ 모든 robots.txt정보는 User-agent 정보를 알려줌으로써 시작
User-agent : robots.txt에 명시한 정책들을 지켜야 하는 주체에 대해 서술하는 부분
→ *은 예외 없이 모든 유저는 아래의 robots.txt정책을 따를 것을 권고한다는 의미
☞ 그 뒤에는 Disallow와 Allow로 나누어 robots.txt내용이 서술되어 있음
Disallow : 자동화프로그램의 접근이 허용되지 않는 부분
Allow : 허용되는 부분
※ "/"는 모든 페이지, "$"는 첫 페이지를 의미
≫ Disallow 라고 되어있는 하위 디렉토리 페이지들에서는 크롤링을 할 수 없음 (이는 처벌을 받을 수 있음)
- 웹사이트 내 세부페이지에 따른 차이를 보여주는 /
☞ "/"표시를 통해 각 페이지 별 세부내용을 표시해줌
→ "/"뒤에 페이지 명을 써주고 각각에 Allow 혹을 Disallow 표시를 해주는 것이 보통
=> robots.txt를 이용한다면 같은 웹사이트일지라도 상세 페이지별 자동화프로그램의 허용 여부를 쉽게 알아낼 수 있음
∴ 데이터를 수집해야 하는 사람의 입장에서 작업해야 하는 것은 간단
본인이 웹크롤링을 진행하고자 하는 웹사이트의 URL을 알아낸 뒤 그 URL이 robots.txt의 상세페이지 설명 중 어느 곳에 해당하는지를 파악하고 그 앞의 단어가 Allow인지 Disallow인지 보면 됨
※ 법적 문제
- 크롤링 행위에서 문제 되는 대표적인 두 가지 법적 문제가 있음
① '정당한 접근 권한 없이 또는 허용된 접근 권한을 넘어 정보통신망에 침입'하는 행위를 금지하는 '정보통신망법' 위반
② 저작권 법 침해 문제
=> 저작권법 역시 데이터베이스 제작자의 권리를 명시적으로 보호하고 있음∴ 크롤링을 계획하는 경우 그 데이터 수집 행위가 이미 타인이 인적·물적 투자로 제작·관리하고 있는 데이터베이스 전부 혹은 상당한 부분을 복제하는 것은 아닌지를 신중히 검토해야 할 것
★ 크롤링 행위는 그 자체가 언제나 위법은 아니지만, 그 행위가 형법이 금지하는 위법 행위를 구성하는 경우에 한해 위법한 것
=> 합법적으로 이용할 경우 웹크롤링은 최고의 데이터 공급원임
<reference(참조)>
EDA (Exploratory Data Analysis) 탐색적 데이터 분석
탐색적 자료분석
EDA (탐색적 데이터 분석) 사용 설명서 (1) - EDA & 통계치 분석
[데이터 사이언스] EDA의 개념과 데이터분석 잘 하는 법
웹크롤링-Colaboratory
합법적으로 '웹크롤링'하는 방법 (上)
합법적으로 '웹크롤링'하는 방법 (下)
크롤링-나무위키
크롤링-해시넷
[크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가?