🍁Crawling (Scraping)
웹 크롤링(Crawling), 웹 스크래핑(Scraping)
웹 사이트(웹 페이지)에서 데이터를 수집하는 행위를 의미한다.
엄밀히 따지면 크롤링은 타깃을 정해두지 않고 데이터를 가져와 그중에 쓸모 있는 데이터를 얻는 것을 의미하고, 스크래핑은 타깃을 정하고 처음부터 유효한 대상만을 긁어오는 것이다.
먼저 긁어오고 나중에 데이터를 추출하느냐, 어떤 데이터를 추출할지 정하고 추출하느냐의 차이이다.
데이터를 얻어오는 방법
a. 상대방(웹사이트)이 나에게 부여한 DB 권한을 사용하는 방법
DB를 select 할 수 있는 권한만 있다면 언제든지 데이터를 사용할 수 있기 때문에 가장 좋은 방법이지만, 불가능하다.
b. 상대방(웹사이트)이 외부에 공개한 OpenAPI를 사용하는 방법
Open이 가능한 일부 데이터를 선별하여 JSON, XML과 같은 형태로 공개하는 경우가 있다.
데이터를 소유하고 있는 사람의 주도하에 다른 사람들에게 사용하라고 Open 한 것이기 때문에 가장 무난하지만, 제한적이다.
내가 보고 싶은 정보를 공개하지 않을 수 있기 때문에 불편함이 있다.
c. 웹 페이지의 소스를 긁어서 원하는 데이터를 추출하는 방법
실제로 많이 사용하는 방법 중 하나지만, 데이터가 너무 많으면 사용하기 어렵다. 그래서 이를 긁어오는 방법으로 프로그램과 함께 사용한다.
크롤링 주의사항
데이터를 수집하는 행위는 허가 문제, 저작권 문제가 생길 수 있다.
웹 페이지로 볼 수 있다는 점은 모두에게 공개된 데이터라는 걸 의미하긴 하지만, 본인의 사업에 이용해도 된다는 걸 의미하진 않는다.
그리고 긁어오는 작업을 프로그램이 하기 때문에 속도가 매우 빠르고 횟수도 아주 많은 편이다. 이는 서버 입장에서는 접속하는 사람이 굉장히 많다는 걸 의미한다. 즉 서버 비용과 트래픽이 증가하게 된다. 미국에서는 크롤링한 사람에게 소송을 걸어서 크롤링한 사람이 패소한 사례도 있다.
서버 입장에서는 크롤링하는 사람과 고객을 구분하여 크롤링한 사람이 접속했을 때 들어오지 못하게 막아놓는 방법이 있지만, 이 때문에 크롤링이 사람인 척하는 방법이 생겨나기도 했다.
크롤링 사전 지식
1. HTML 이해
2. CSS 선택자 이해, JavaScript 이해
3. Java이해