top of page

[데이터 수집] 빅데이터와 웹스크래핑의 역할


웹스크래핑은 빅데이터 분석, 머신러닝(Machine Learning), 인공지능(Artificial Intelligence)의 기반인 데이터를 수집하는데 필수인 작업입니다.

마이클 더글러스(Michael Douglas)가 월스트리트(Wall Street) 영화에서 말했듯이, 정보는 세계에서 가장 귀중한 상품입니다.



정보를 보유한 사람은 정보가 유출되지 않도록 모든 예방 조치를 취합니다. 인터넷이 대중화 되기 전에는 저작권법이 상당히 견고했기 때문에 정보 보안이 어렵지 않았습니다. 그러나 인터넷이 발달하면서 누구나 텍스트를 쉽게 복사하고 붙여넣기 할 수 있을뿐더러 웹스크래퍼는 사람보다 이런 작업을 쉽게 해낼 수 있습니다.



수집해야 하는 웹사이트의 자바스크립트(JavaScript) 양에 따라 웹스크래핑의 복잡한 정도를 3단계로 나누어 볼 수 있습니다.


1. Level 1

a) 데이터를 수집해야하는 웹페이지에 자바스크립트가 없는 간단한 페이지 입니다. '로케이터locator'를 만들어야 하는 경우가 있습니다. XPath로 로케이터를 만들 수 있습니다.

b) URL에 직접 접근합니다. 관련된 URL을 찾아주는 것이 어려운 점이며 'class' 속성을 예로 들 수 있습니다. 이 경우 XPath는 다음과 같이 구현됩니다. `//a[@class=’Your_target_class’]`

2. Level 2

a) 부분적인 자바스크립트 렌더링이 있는 경우 입니다. 예를 들어 검색 결과 페이지에 모든 정보가 담겨 있지만 자바스크립트로 선택하여 표시 됩니다. 그렇기 때문에 특정 결과를 열면 전체 데이터를 수집할 수 있습니다.

b) 간단한 페이지 넘김이 구현되어 있습니다. '다음페이지' 버튼을 계속 클릭하는 대신 'http://somesite.com/data?page=2&limit10'과 같은 URL을 만들 수 있습니다. 그리고 같은 방법으로 넘기는 페이지 수를 늘일 수 있습니다.

c) 간단한 URL 생성 규칙. URL을 JS로 만들고 수정할 수 있습니다.

3. Level 3

a) 자바스크립트로 만들어진 페이지 입니다. 자바스크립트를 실행하지 않으면 데이터를 가져올 수 없습니다. Selenium 또는 WebKit 도구가 이용되어야 합니다.

b) URL이 자바스크립트로 생성되었습니다. 앞서 말한 Selenium 또는 WebKit 도구로 문제를 해결할 수 있지만 처리속도가 느려질 수 있습니다. 데이터 수집과 이 작업을 분리하고 시간이 걸리는 작업을 별도로 분리하여 처리하는 방법이 있습니다.

c) 캡차(Capcha) 페이지로 리다이렉트 될 수 있습니다. 캡차는 어려번 요청사항을 보냅니다. 캡차는 분산된 프록시 서버, 여러 IP 변경을 통해 해결 할 수 있습니다. 이 해결 방법은 다른 위치에서 액세스를 에뮬레이트 하는데 이용할 수 있습니다.

d) 어떤 웹사이트는 복잡한 데이터 전송규칙으로 구성된 API를 이용합니다. 백앤드에서 보내주는 데이터를 자바스크립트로 페이지를 렌더링 합니다. 이 경우에는 백엔드에 직접 쿼리를 요청하는 편이 데이터를 쉽게 수집할 수 있는 방법입니다. 이 동작들을 분석하려면 브라우저 개발자 도구를 이용하면 됩니다.



데이터 수집이란 모든 형태의 데이터를 수집하는 것을 뜻하지만 웹스크래핑은 웹페이지의 데이터를 스크래퍼나 로봇으로 수집하는 것을 의미합니다. 성공적인 빅데이터 마이닝을 위해서는 관련된 데이터 소스를 찾는 것부터 출발한다고 볼 수 있습니다.

웹스크래핑을 이용하면 마케팅 부서는 시장 트렌드를 실시간으로 모니터링 하고 고객들의 반응을 월말 보고서가 작성 될때까지 기다리지 않아도 됩니다. 그리고 웹스크래핑으로 온라인 쇼핑몰에서 재품명, 제품 설명, 고객 리뷰에 대한 방대한 양의 데이터를 수집할 수 있습니다. 이렇게 수집된 데이터를 바탕으로 분석된 결과로 판매 전략을 수립하여 유통채널과 협업하고, 제품 전략을 수립 또는 수정하여 제품을 개선하고 더 큰 매출에 도달 할 수 있습니다.



웹스크래핑을 하기 위한 도구와 방법론

대부분의 경우 웹스크래핑 스크래퍼는 파이썬(Python)으로 개발하고 있습니다. 그리고 Scrapy, Ghost, lxml, aiohttp, Selenium 같은 프레임워크과 라이브러리를 사용합니다.

복잡한 구조의 웹페이지를 처리할 수 있는 스크래퍼를 개발하기 위해서는 수집해야 하는 웹페이지를 먼저 분석하고 서버의 처리 능력을 계산해 보아야 합니다. 또한 웹페이지의 구조는 항상 변하기 때문에 스크래퍼는 수정또는 확장이 용이하도록 개발 되어야 합니다.








Comentários


bottom of page