인터넷에 있는 수많은 정보들을 내가 만드는 사이트에 가져와서 활용하고 싶을때는 어떻게 해야할까? 

그럴때 사용하는 방법을 scraping, crawling이라고 한다. 공공으로 제공되는 api들을 활용하여 지도나 공공데이터를 내 서비스에서 이용할 수 있게 되는 것이다. 하지만 그렇다고 아무 사이트에서 모든 정보들을 내 서비스에 활용하면 안된다.

오늘은 매우매우 유용하고 무슨 서비스를 하던 반드시 사용하게 되겠지만 또 동시에 굉장히 위험할 수도 있는 scraping과 crawling에 대해서 공부해보았다.


 

스크래핑이란?

퍼가욤

 웹 스크래핑이랑 크롤링은 서로 비슷한듯 하지만 또 분명한 차이점이 존재한다. 우선 스크래핑이랑 어떤 특정한 시스템을 활용하여 웹사이트에서 콘텐츠와 데이터등을 추출하는 프로세스를 말한다. 화면에 표시된 픽셀만 복사하는 화면 스크래핑과 달리 웹 스크래핑은 기본 HTML 코드부터 데이터베이스에 저장된 데이터까지 모두 추출해서 직접 그 안의 내용을 확인해보고 활용까지 가능하다! 매우 무긍무진하고 아주 중요한 작업이다. 이를 토대로 최근에 매우 각광받는 분야인 머신러닝, 빅데이터 분야에 활용되곤 한다. 하지만 유용한 기능인 만큼 불법적으로 이용되는 경우도 많기 때문에 스크래핑을 할 때에는 항상 이 페이지가 스크래핑을 허용하는 페이지 인지, 허용한다고 하더라도 진짜 이용해도 되는 것인지에 대해서 잘 알아보고 활용해야한다. 일반적으로 합법적인 선에서 스크래핑을 활용한다 하면 콘텐츠를 분석해서 순위를 매긴다거나 가격을 비교하거나 각종 시장에 대한 조사를 하는 등에 사용되곤 한다.

 

크롤링이란?

 

 

 크롤링이란 웹상의 정보들을 찾아서 수집하는 일련의 작업을 의미한다. 인터넷에는 하나의 정보에 대해 검색만 해도 수천, 수만가지의 정보들이 쏟아져 나오고 이를 인간이 원하는 정보만 추려서 사용하기란 쉽지 않다. 따라서 사용자가 규정한 특정한 조건에 맞추어 정보를 수집하도록 도와주는 프로그램을 고안하였는데 이를 웹 크롤러라고 하고 이것이 실행하는 동작을 크롤링이라고 한다. 복잡하게 설명했지만 이해하기는 어렵지 않을 것 같다. 쉽게 말해서 원하는 데이터를 쉽게 가져오도록 도와주는 도구라고 보면 된다. 쉬운 예시로는 그냥 네이버나 구글 다음의 검색엔진을 생각하면 된다. 우리가 검색하려는 조건(검색내용)을 입력하고 엔터만 누르면 그순간 수많은 인터넷에 돌아다니는 정보들에서 그 조건에 일치하는 데이터들을 우리 앞에 가져다 준다. 

 

비슷하면서 다른 스크래핑과 크롤링

 

 스크래핑과 크롤링 모두 인터넷에서 원하는 데이터를 수집한다는 공통된 특징때문에 혼용되어 사용되곤 하지만 자세히 살펴보면 특징이 다르다. 스크래핑은 어떤 특정한 사이트를 지속적으로 추적하여 정보를 수집하는 개념이기 때문에 실시간 정보나 특정 사이트의 정보를 수집할 때 쓰이는 데이터 수집 방식이고 크롤링은 웹상을 돌며 사용자가 지정한 조건에 부합하는 데이터들을 수집해 온다. 따라서 웹 페이지의 링크를 자체적으로 계속 타고 나가며 데이터를 수집해 온다. 또한 스크래핑은 특정 데이터만을 추출하는 것이 아니므로 중복된 데이터를 따로 제거해줄 필요가 없지만 크롤링 같은 경우는 동일한 데이터가 여러 페이지에 등록되어 있다면 이를 검증하여 중복을 제거해주어야 한다. 여러모로 둘다 적재적소에 사용하여 본인의 사이트를 풍부하고 유용하게 만들어 나가기에 매우 좋은 기능이다. 하지만 처음에도 말했듯 무분별한 데이터 스크래핑, 크롤링은 의도치 않은 저작권 침해와 연관될 수 있으니 조심하자! 마지막으로 이와 관련된 기사 하나 첨부하며 오늘의 공부도 끝!

여기어때 크롤링 위법 사례: https://biz.chosun.com/topics/law_firm/2021/09/29/OOBWHWT5ZBF7DESIRKNPYIODLA/

Reference
 - https://blog.codef.io/crawling_vs_scraping/

'오늘의 공부 정리' 카테고리의 다른 글

16. Transaction  (0) 2022.08.09
15. DB Schema  (0) 2022.08.08
13. 결제 서비스 구현하기 (feat. iamport)  (0) 2022.08.05
12. NestJS 폴더 구조  (0) 2022.08.04
11. TypeORM  (0) 2022.08.04
복사했습니다!