[PART1] 웹/디자인 - TERMS 09
[ TERMS 09 ] 크롤링

1. 크롤링(crawling)의 정의
크롤링은 Crawl(=엎드려 기다) 에서 유래된 단어이다. 크롤링은 웹 크롤링의 줄임말로 웹을 기어 다니며 정보를 수집하는 프로그램을 의미한다. 그리고 크롤링을 하는 친구를 '크롤러(crawler)'[ 동의어 : '스파이더', '웹 스파어더', '스파이더 봇' ]이다.원하는 정보를 가져올 수 있다는 점이 크롤링의 활용도를 무궁무진하게 만든다. 정적인 데이터부터 API와 같은 서비스까지 웹상에 표시되는 모든 데이터를 파싱할 수 있다.
크롤링을 공부할 때에는 스크래핑(scraping)과의 관계를 명확하게 알아야 한다.

크롤링(crawling) | 스크래핑(scraping) | |
웹을 돌아다니는 목적 | 정보를 탐색하는 것 | 정보를 추출하는 것 |
웹에서의 행동 | 하나의 페이지에서 웹 링크를 반복적으로 찾고 가져오는 행동을 함 | 웹 페이지의 정보를 가지고 오는 행위를 함 |
필수관계 | 크롤링을 하려면 스크랩핑은 필수 | 크롤링없이 스크랩핑 가능 |
스크래핑이 크롤링보다 더 큰 개념이다. 하지만 스크래핑이라는 용어가 크롤링으로 통용되고 있다.
2. 크롤링은 어떻게 접하게 될까?
크롤링을 사용하는 대표적인 예로는 가격 비교 사이트가 있다. 가격 비교 사이트는 여러 쇼핑몰에 흩어져 있는 제품 정보를 수집해서 최저가로 판매하는 사이트를 찾아주는데, 이때 여러 사이트에서 제공하는 제품 정보를 크롤링을 통해서 수집하고 분석한다.
3. 크롤링 알아보기
> 과정

위의 그림은 검색 엔진이 정보를 수집하고 사용자에게 제공하기 전까지의 과정을 나타낸다.
- 정보 수집(Crawling) : 검색 서비스들은 크롤러를 이용해 다른 웹 사이트에 있는 정보들을 수집한다. 이때 'robots.txt' [크롤러에게 웹 페이지의 정보를 수집하도록 허용하거나 제한하는 국제 권고안]에 작성된 규칙을 준수한다.
- 수집된 정보 색인화(Indexing) : 크롤링 된 정보들은 색인화해서 저장한다. 색인화란 특정 내용이 들어 잇는 정보를 쉽게 찾아볼 수 있도록 표시를 하거나 일정한 순서에 따라 배열해 놓는 것을 말한다.
- 자료의 순위 매기기(Ranking) : 검색 서비스들은 높은 품질의 서비스를 제공 하기 위해 사용자의 위치, 시간, 언어 등과 입력한 검색어를 조합하여 사용자에게 알맞은 정보를 제공한다. 색인화를 미리 해두었기에 굉장히 빠른 속도로 검색 결과를 제공한다.
> 적용사례
- 실시간 최저가 : 가격 비교 사이트는 대표적인 크롤링 적용 사례이다. 크롤러는 일정 주기마다 여러 쇼핑몰을 돌아다니며 가격 정보를 수집한다. 수집된 가격 정보는 실시간으로 반영되어 구매자가 저렴하게 상품을 구매하도록 도와준다.
- 코로나19 확진자 수를 알려주는 사이트 : 국가에서 제공하는 공공데이터 포털을 이용하면 코로나19 확진자 수, 날씨, 교통정보 등 실생활에 유용한 정보를 쉽게 크롤링할 수 있다.
- 고객의 소리 : 기업은 웹상에 올라와 있는 제품이나 서비스의 품질 향상을 위해 크롤링을 활용하여 고객의 피드백을 수집하고 있다. 크롤러를 활용하면 인건비를 절감할 수 있다.
> 크롤러 제작
파이썬, 자바, Node.js 같은 프로그래밍 언어를 사용해서 직접 크롤러를 제작할 수 있다. 이미 다양한 크롤러 라이브러리가 제공되고 있어 쉽게 크롤러를 제작할 수 있다. 최근에는 SAAS(Software As A Service) 형태로 크롤러를 쉽게 만드는 서비스들이 제공되고 있다. 대표적으로 Apify, OctoParse, Web Scraper(크롬 확장앱) 등이 있다.
4. 크롤링을 알아야 하는 이유
구글, 네이버는 어떻게 빠른 검색이 가능할까? 웹에는 많은 양의 정보가 있고 지금도 계속 생산중이다. 정보의 바다 속에서 우리가 원하는 정보만을 가져오는 것은 큰 어려움이 존재한다. 이런 문제점을 해결하기 위해 만들어진 것이 검색 서비스이다. 각 서비스는 GoogleBot, Yeti, Bingbot과 같은 크롤러를 가지고 잇다. 검색 서비스들은 수집, 색인화, 랭킹을 이용하여 사용자들에게 딱 맞는 정보를 제공해 준다.
5. 크롤링 더 알아보기
> 크롤러 제작
robots.txt는 사이트의 루트 디렉터리에 있는 텍스트 파일이다. 사이트가 http://a.com이라면 http://a.com/robots.txt에서 확인할 수 있다. 이 문서는 앞에서 설명한 검색 엔진이 크롤링해야 하는 페이지와 무시해도 되는 페이지를 알려 주는 역할을 한다.
User-agent: Googlebot
Disallow: /
User-agent: Yeti
Allow: /
'User-agent'에는 제어할 검색 엔진의 이름을 작성하면 되고, 'Allow/Disallow'에는 경로를 작성하면 됩니다. 위의 코드는 Googlebot은 전부 차단하고, Yeti는 전부 허용하는 코드입니다. robots.txt를 작성하지 않으면 기본적으로 모든 검색 엔지니이 사이트를 크롤링할 수 있기 때문에 사이트의 특성에 맞게끔 설정하는 것이 중요합니다.
> 무분별한 크롤링
앞서 소개한 크롤링 툴로 거의 모든 사이트의 정보를 크롤링할 수 있다. 하지만 크롤링을 제한하는 사이트를 크롤링하게 되면 문제가 발생할 수 있다. 과도한 크롤링으로 해당 사이트의 서버가 과부화될 수 있다. 크롤링한 정보를 상업적으로 이용하는 것은 불법이다. 따라서 크롤링하기 전에 꼭 해당 페이지의 robots.txt를 살펴봐야 한다.
> 함께 알아 두면 좋은 용어
- API
- SEO
- SAAS
> 혼동하기 쉬운 용어
- 스크래핑
- RPA(Robotic Process Automation)
- 파싱
> 참고 자료
- https://www.selenium.dev/ 셀레니움
- https://www.crummy.com/software/BeautifulSoup/bs4/doc/ beautifulSoup
- https://jsou.org/ jsoup
- https://apify.com/ apify
- https://www.octoparse.com/ octoparse
- https://www.data.go.kr/ 공공 데이터 포털
- https://under.copm/resources/ua-list/crawlers 유명한 크롤러 리스트
- https://developers.google.com/search/docs/advanced/robots/intro?hl=ko 구글 robots.txt 소개 페이지