제대로 크롤링을 하려면 클라우드서버를 활용하자
최근 학원이나 온라인 교육 사이트에서 소프트웨어 교육과정에 꼭 들어가는게 크롤링입니다.
빅데이터 분석과정에도 빠지지 않고 꼭 등장하는 크롤링 기술인데, 대충 만들어서는 내가 원하는 데이터의 10%도 수집하지 못하게 되는 경우가 있습니다. 많은 시간을 투자하여 개발하였지만 문제를 나중에 발견하게 되어 낭패를 보게 될 가능성이 있습니다.
그럼 먼저 크롤링에 대해 알아보고 왜 10% 밖에 수집 못한다고 주장하는지, 그럼 어떻게 그 문제를 해결할 수 있는지에 대해 알아보겠습니다.
나무위키에는 크롤링을 다음과 같이 정의되어있습니다.
크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다.
그럼 크롤러를 개발할 때 주의할 점에 대하여 알아보시죠.
데이터 분석에 파이썬이 주로 쓰이다 보니 대부분의 교재나 교육프로그램에서 파이썬을 사용하여 크롤러를 만듭니다. 하지만 반드시 파이썬을 써야 할 필요는 없다. 우리 회사 해시스크래퍼는 루비(Ruby)로 만들고 있습니다.
목적만 달성한다면 어떤 도구를 쓰든 상관 없지만 널리 쓰이는 파이썬을 선택하는 건 좋은 선택이라고 생각합니다. 노하우(know how)가 아니라 노웨어(know where)가 더 중요한 시대인지라 검색을 통해 문제를 해결하기 쉬운 언어를 선택하는것은 똑똑한 선택입니다. (하지만 그래도 저는 쉽고 편한 루비를 선택했습니다)
책을 보고 열심히 타이핑하고 이해하며 크롤러를 만들어 돌려보면 처음에는 잘 됩니다.
하지만 규모가 좀 있는 대형 사이트를 대상으로 데이터를 수집하다보면 다음과 같은 상황에 마주치게 됩니다.
접속이 차단되는 경우
로그인을 하라고 하는 경우
캡챠가 뜨는 경우
엉뚱한 페이지로 이동되는 경우
웹 서버는 당신의 IP를 알고 있기 때문에 짧은 주기로 웹 페이지를 요청할 경우 일정시간 IP가 차단될 수 있습니다.
IP차단을 해결하려면 어떻게 해야할까요? 더 많은 IP가 있으면 됩니다. 심플하지만 현실적으로 어려운 방법이죠.
그래서 우리는 3년 전 쯤 부터 AWS EC2 여러개를 사용하여 데이터를 수집하고 있습니다.
또한 수집 할 데이터량에 따라 AutoScaling 기술을 적용하여 서버 수를 늘리고 줄이는것을 자동으로 하고 처리하고 있습니다.
또 연속 실패를 반복하는 서버는 스스로 종료시키고 다른 인스턴스를 생성하여 새로운 IP를 할당 받아 사용합니다.
우리 처럼 ec2를 이용하여 크롤링하는 곳들이 꽤 생겼는지 특정 서버들은 ec2 IP대역을 전체를 차단한 경우도 있습니다. 그래서 국내 호스팅 업체를 통해 깨끗한(?) IP를 확보하고 필요할 경우 이 Proxy IP 서버를 활용하고 있습니다.
과제나 리포트 작성을 위한 데이터 수집 정도는 기초적인 크롤러를 만드는 것 만으로도 충분합니다.
그러나 업무(마케팅, 트랜드분석, 플랫폼 기초 데이터, 인플루언서 검색 등)에 활용하려면 제대로 된 크롤링 시스템을 갖추는 것을 추천드립니다.
1년 동안 매주 목요일에 스타트업(창업)과 데이터 수집 분석에 대한 글을 포스팅하는 것이 목표입니다. 관심이 있으시면 댓글과 응원 부탁드립니다.