brunch

You can make anything
by writing

C.S.Lewis

by 밤코딩 밤치 Sep 04. 2020

크롤러 대충 만들면 큰 코 다친다

제대로 크롤링을 하려면 클라우드서버를 활용하자

누구나 다 해보는 크롤링(crawling)할때 주의 할 점 3가지


최근 학원이나 온라인 교육 사이트에서 소프트웨어 교육과정에 꼭 들어가는게 크롤링입니다.


빅데이터 분석과정에도 빠지지 않고 꼭 등장하는 크롤링 기술인데, 대충 만들어서는 내가 원하는 데이터의 10%도 수집하지 못하게 되는 경우가 있습니다. 많은 시간을 투자하여 개발하였지만 문제를 나중에 발견하게 되어 낭패를 보게 될 가능성이 있습니다.


그럼 먼저 크롤링에 대해 알아보고 왜 10% 밖에 수집 못한다고 주장하는지, 그럼 어떻게 그 문제를 해결할 수 있는지에 대해 알아보겠습니다.


크롤링 교육 광고


크롤링이란?


나무위키에는 크롤링을 다음과 같이 정의되어있습니다.


크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다.


https://namu.wiki/w/크롤링


그럼 크롤러를 개발할 때 주의할 점에 대하여 알아보시죠.


1. 파이썬이 짱일까?


데이터 분석에 파이썬이 주로 쓰이다 보니 대부분의 교재나 교육프로그램에서 파이썬을 사용하여 크롤러를 만듭니다. 하지만 반드시 파이썬을 써야 할 필요는 없다. 우리 회사 해시스크래퍼는 루비(Ruby)로 만들고 있습니다.


목적만 달성한다면 어떤 도구를 쓰든 상관 없지만 널리 쓰이는 파이썬을 선택하는 건 좋은 선택이라고 생각합니다. 노하우(know how)가 아니라 노웨어(know where)가 더 중요한 시대인지라 검색을 통해 문제를 해결하기 쉬운 언어를 선택하는것은 똑똑한 선택입니다. (하지만 그래도 저는 쉽고 편한 루비를 선택했습니다)



2. IP차단 어쩔래?


책을 보고 열심히 타이핑하고 이해하며 크롤러를 만들어 돌려보면 처음에는 잘 됩니다.

하지만 규모가 좀 있는 대형 사이트를 대상으로 데이터를 수집하다보면 다음과 같은 상황에 마주치게 됩니다. 


접속이 차단되는 경우

로그인을 하라고 하는 경우

캡챠가 뜨는 경우

엉뚱한 페이지로 이동되는 경우


웹 서버는 당신의  IP를 알고 있기 때문에 짧은 주기로 웹 페이지를 요청할 경우 일정시간 IP가 차단될 수 있습니다.


IP차단을 해결하려면 어떻게 해야할까요? 더 많은 IP가 있으면 됩니다. 심플하지만 현실적으로 어려운 방법이죠.

그래서 우리는 3년 전 쯤 부터 AWS EC2 여러개를 사용하여 데이터를 수집하고 있습니다.

또한 수집 할 데이터량에 따라 AutoScaling 기술을 적용하여 서버 수를 늘리고 줄이는것을 자동으로 하고 처리하고 있습니다.

또 연속 실패를 반복하는 서버는 스스로 종료시키고 다른 인스턴스를 생성하여 새로운 IP를 할당 받아 사용합니다.



3. 주식뿐만 아니라 IP도 분산 투자하자


우리 처럼 ec2를 이용하여 크롤링하는 곳들이 꽤 생겼는지 특정 서버들은 ec2 IP대역을 전체를 차단한 경우도 있습니다. 그래서 국내 호스팅 업체를 통해 깨끗한(?) IP를 확보하고 필요할 경우 이 Proxy IP 서버를 활용하고 있습니다.





과제나 리포트 작성을 위한 데이터 수집 정도는 기초적인 크롤러를 만드는 것 만으로도 충분합니다.

그러나 업무(마케팅, 트랜드분석, 플랫폼 기초 데이터, 인플루언서 검색 등)에 활용하려면 제대로 된 크롤링 시스템을 갖추는 것을 추천드립니다.




1년 동안 매주 목요일에 스타트업(창업)과 데이터 수집 분석에 대한 글을 포스팅하는 것이 목표입니다. 관심이 있으시면 댓글과 응원 부탁드립니다.




작가의 이전글 RubyMine에서 Push, Pull 오류 해결방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari