웹 스크레이퍼: 웹에서 데이터를 수집하는 법

공급업체 사이트의 가격을 손으로 스프레드시트에 옮기는 건 상품 스무 개까지는 할 만합니다. 2,000개라면 일주일이 사라지고 오타도 남습니다. 웹 스크레이퍼(파서 또는 크롤러라고도 합니다)는 대신 페이지를 열고, 각 페이지에서 같은 정보를 뽑아 표로 저장하는 작은 프로그램입니다. 무엇을 할 수 있는지, 무엇을 준비할지, 어떤 규칙을 지켜야 하는지 알려 드립니다.

스크레이퍼가 유용한 곳
같은 종류의 정보가 비슷한 페이지 여러 곳에 있다면 스크레이퍼가 유용합니다.
- 가격과 재고. 공급업체 가격이 어떻게 바뀌는지, 어떤 상품이 품절인지 추적합니다.
- 공급업체 카탈로그. 상품명, 설명, 이미지, 가격을 내 쇼핑몰로 옮깁니다.
- 매물 목록. 공개 게시판의 부동산, 자동차, 채용 공고를 표 하나로 모읍니다.
- 행사와 기사. 공개 일정표나 뉴스 페이지에서 날짜, 제목, 링크를 모읍니다.
수집이 허용된 것만 수집하세요
무엇보다 먼저 그 데이터를 가져가도 되는지 확인하세요.
- 공개 페이지만. 데이터를 보려면 로그인해야 한다면 스크레이퍼는 맞는 도구가 아닙니다.
- 사이트 이용 약관을 읽으세요. 많은 사이트가 무엇을 수집해도 되고 안 되는지 밝혀 두고 있습니다. 대형 플랫폼, 검색 엔진, SNS는 보통 금지하므로 공식 내보내기 기능이나 API를 이용하세요.
- 요청 속도를 지키세요. 페이지 사이에 몇 초씩 쉬면 사이트 부담이 적습니다. 캡차나 차단을 우회하려 해서는 절대 안 됩니다.
- 개인정보 보호법을 지키세요. 사람의 이름, 이메일, 전화번호는 개인정보이며 많은 나라에서 수집을 엄격히 제한합니다. 수집 대상에서 빼세요.
결국 사이트의 데이터를 수집하고 사용해도 되는지는 본인이 판단할 일이니 시작하기 전에 확인하세요.
페이지를 설명하세요
스크레이퍼는 페이지의 실제 구조에 맞춰 작성되므로 정확하게 알려 주세요.
- 목록 페이지 링크와 상품 하나의 페이지 링크.
- 대략적인 페이지 수, 예를 들어 “상품 24개씩 있는 목록 페이지 약 40개”.
- 브라우저에서 저장한 페이지 한두 개(파일 > 다른 이름으로 페이지 저장) 또는 그 스크린샷.
필드는 표의 열처럼 나열하세요
결과를 스프레드시트라고 생각하고 열 이름을 순서대로, 각각 예시와 함께 적으세요.
- 상품명: “원목 도마, 대”
- 가격: “34.90”
- 이전 가격: 할인 중인 상품이라면 “39.90”
- 재고: “있음”
- 상품 페이지 링크와 이미지 링크
모호한 필드 서른 개보다 분명한 필드 열 개가 낫습니다. “재고 있는 상품만”처럼 필요한 규칙도 덧붙이세요.
형식과 실행 환경 고르기
- CSV는 어떤 스프레드시트에서든 열리고 대부분의 쇼핑몰 시스템으로 가져올 수 있습니다.
- Excel은 직접 필터링하고 정렬할 때 더 편합니다.
- JSON은 데이터를 다른 곳에 불러올 개발자에게 맞습니다.
스크레이퍼는 내 컴퓨터에서 Python으로 실행되므로 데이터가 바로 나에게 오고, 새 숫자가 필요할 때마다 다시 실행할 수 있습니다.
사이트가 바뀌면
스크레이퍼는 지금 모습의 페이지를 따라갑니다. 사이트 디자인이 바뀌면 스크레이퍼가 필드를 찾지 못해 업데이트가 필요할 수 있습니다. 예의 바른 속도로 방문해도 사이트가 접속을 제한할 수 있습니다. 매주 이 데이터에 의존한다면 이 점을 계획에 넣으세요.
정리
필요한 공개 페이지와 필드를 정하고, 사이트 이용 약관을 확인하고, 예의 바른 속도를 지키고, 개인정보는 빼세요. 코드를 직접 짜고 싶지 않다면 웹 스크레이퍼를 주문하세요. 사이트, 필드, 저장한 페이지 한두 개를 보내면 Python 코드, 설정 파일, CSV, Excel 또는 JSON으로 실행하는 단계별 안내서를 받을 수 있습니다. 대금은 작업을 승인한 후에만 지급됩니다.