[데이터 수집] 아마존 웹크롤링

2019년 7월 8일 업데이트됨


Original Article by Tom Hunter (NYC Data Science Academy Blog) Translated by JJ Hwang




서론


이커머스 시장은 지난 5년 동안 연10% 이상의 성장률로 빠르게 성장하였으며, 많은 분석가들이 향후 전망도 긍정적으로 바라보고 있습니다. 엄청난 양의 데이터를 기반으로 한 기술적 진보를 발판으로 기존 유통 회사들의 전통적 방식들을 위협하고 있는 것이지요.

이커머스는 데이터 수집이라는 측면에서 유통 산업 전반에 혜택을 가져오기도 합니다. 기존 유통 산업이 보유한 신용카드 번호나 이메일 주소 같은 고객 정보는 이커머스의 방대한 데이터 양에 비하면 아무것도 아닙니다. 이커머스는 고객 개인 정보부터 웹페이지 상의 상세한 행동 패턴에 이르기까지 기존 유통 산업이 상상할 수 없는 수준과 규모의 데이터를 축적하고 있습니다.



아마존은 이커머스 산업의 핵심 플레이어입니다. 1990년대부터 이커머스를 개척하고 고객의 기대를 넘어서는 혁신을 지속해 왔습니다. 아마존이 대규모의 데이터를 수집, 분석 및 활용하는 데에 정통하다는 것은 그리 놀라운 일이 아닙니다. 이에 본 포스팅의 궁극적인 질문은 다음과 같습니다.


아마존의 제품 리스트 데이터를 통해 판매량을 예측할 수 있을까?


이에 대한 답을 내어 보고자 시도했던 데이터 사이언스 방식의 작업들을 서술하도록 하겠습니다. 미리 말하자면 아래와 같이 세 개의 카테고리로 분류될 것입니다.


· 잘된 것 : 의도대로 수집하여 분석이 잘 이루어진 것

· 미흡한 것 : 차선의 방식으로 수집이 가능하여 결정적인 문제가 되지는 않았던 것

· 실패한 것 : 데이터 수집에 실패하여 분석을 전혀 못한 것

활용한 웹크롤링 관련 스킬

· Python 3.5

· Scrapy 1.1.1

· Shiny dashboard

잘된 것

스크래피를 활용하여 아마존 웹사이트의 모든 최상위 카테고리 리스트를 크롤링하였습니다. 아래의 이미지와 같이 문제없이 잘 진행되었네요.

최상위 카테고리와 각 카테고리 페이지의 URL을 설정한 후, 각 카테고리 당 보여지는 상위 100개 리스트 페이지의 URL을 수집하여 각각의 제품을 크롤링하였습니다. 이 상품 중 하나를 크롤링한 후, 아래 이미지와 같이 “이 제품을 구매한 사람이 이러한 다른 상품도 구매하였습니다” 섹션의 제품들을 선택하는 방식으로 아마존을 전반적으로 크롤링하였습니다.

이러한 작업은 크롤러가 거의 모든 제품을 탐색할 때까지 계속되었습니다. 대략 30만건 이상의 제품 리스트 데이터를 수집했습니다. 하지만 이 데이터가 최초의 질문에 답을 줄 수 있는 근거는 되지 못하였습니다.

미흡한 것

크롤링을 하며 결과물이 HTTP response code 200이라는 메시지와 함께 수집되는 데이터 없이 돌아오는 것을 알게 되었습니다. 원인을 파악해보니 몇몇 제품 페이지들이 크롤링의 의도와 다른 페이지 구조를 갖고 있었던 것으로 생각됩니다. 각 제품의 특징과 요소가 다른 만큼, 웹페이지 상에서 표기된 요소들도 다를 수 밖에 없는 것이 당연할 것입니다. 아마존 전체를 크롤링하여 완성된 규모의 제품 데이터를 수집하려는 목적이 아니었기 때문에 이를 큰 문제로 생각하지 않았으며, 몇몇 분석과 예측을 진행하기에 충분한 데이터를 수집한 것에 만족했습니다.

아마존 Best Seller Rank (BSR)의 몇몇 제품들은 전혀 크롤링할 수 없었습니다. 아마존이 공식적으로 제공하는 API의 활용도 여의치 않았으며, API로 제공하는 제품의 세부 데이터 양식은 크롤링으로 획득한 데이터 양식과 맞지 않아 활용성이 떨어진다는 것을 확인했습니다. 따라서 몇몇 제품은 전체 아마존 사이트의 BSR 영역에서, 다른 몇몇 제품은 최상위 카테고리에서 BSR 순위 데이터에 접근했습니다. 심지어는 몇몇 제품은 BSR의 하위 카테고리에서 데이터를 크롤링해야 했지요. 결론적으로 데이터 양식이 일관적이지 못하다는 것은 크롤링한 BSR 데이터를 무용지물로 만드는 것이나 다름없습니다. 대안적으로 ASIN 코드와 BSR 데이터를 매치시키는 방식으로 API를 부분적이나마 활용할 수 있었습니다.

실패한 것

판매량 예측이라는 애초의 목적을 달성하는 것이 어려워진 이유는 간단히 말하여 신뢰할만한 데이터를 충분한 양만큼 크롤링하지 못했다는 것입니다. 이는 대부분 아마존이 채택하고 있는 캡차와 IP 차단이라는 기법 때문입니다.

크롤링을 시작했을 때는 순조롭게 데이터가 수집되었으나, 불과 몇 분 후 아마존은 작업을 진행하는 컴퓨터의 IP를 차단하였습니다. 차단을 우회하고자 IP 로테이션 서비스를 제공하는 VPN을 활용하였으나, 속도가 느리고 새롭게 할당된 다량의 IP가 곧바로 연쇄적으로 차단되었기 때문에 매우 비효율적이었습니다.

결론 및 차후 계획

결론적으로 아마존에서 충분한 양의 데이터를 수집하는 것에 큰 어려움들에 봉착해 있습니다.

· 첫째 DOM 구조를 달리하도록 크롤러 코드를 수정하는 방법,

· 둘째 효율적으로 IP를 우회하는 방법,

· 셋째 캡차와 같이 아마존에 접근하는 것이 실제 사람인지 봇인지를 체크하는 과정을 우회하는 방법

을 마련해야 한다는 것을 확인했다는 것이 소득이라고 할 수 있겠습니다.

비용, 시간, 정확도라는 효율성을 고려한다면 전문적인 웹크롤링 업체에 서비스를 의뢰하는 것도 훌륭한 대안이 될 것 같습니다.


=================

스파이더킴 (www.spiderkim.com)

웹크롤링, 웹스크래핑, 웹데이터 수집, 빅데이터에서 최고의 서비스를 제공합니다. 지금 바로 홈페이지를 방문하셔서, 문의 요청해 주십시오!

조회 936회

​고객센터

Tel: 02-596-8900  Fax : 02-6930-5709

10시 - 오후 7시(토, 일요일 및 공휴일은 휴무)

개인정보관리책임자 : 황재준   상호 : 유펜솔루션   대표자 : 김재훈   사업자등록번호 : 426-86-00939
주소 : (본사)대전광역시 유성구 엑스포로446번길 38, 3층 302호 / (지사 및 연구소)서울시 성동구 연무장 15길 11, B동 2층
​ⓒ 2019 UpennSolution Co., Ltd. All rights reserved.