🚀 Puppeteer로 배민 셀프 주문 데이터를 자동으로 수집하기
최근 들어 배달의민족 셀프 시스템을 사용하는 점주들이 늘어나면서, 주문 데이터를 효율적으로 관리하고 분석하려는 수요가 커지고 있습니다. 하지만 수동으로 주문 내역을 다운로드하거나 복사하는 과정은 여전히 불편하죠.
이 문제를 해결하기 위해, 저는 Puppeteer를 이용해
배민 셀프 시스템의 주문 내역 페이지 (https://self.baemin.com/orders/history)에서
데이터를 자동으로 수집하고, 이를 Excel(xlsx) 파일로 저장하는 자동화 프로그램을 개발했습니다.
💡 사용 기술
- Puppeteer — Headless Chrome 기반 브라우저 자동화
- Node.js — 비동기 처리 및 파일 입출력 관리
- xlsx — 주문 데이터를 Excel 파일로 변환
⚙️ 주요 기능
- 자동 로그인 (배민 셀프 계정 정보 입력)
- 주문 내역 페이지 접속 및 날짜 필터 설정
- 모든 페이지의 주문 데이터 수집
- Excel 파일 자동 저장
특히 날짜 필터를 수동으로 지정하지 않고, 오늘 날짜를 자동으로 인식하도록 구현하여 매일 실행만 하면 자동으로 최신 주문 내역을 수집할 수 있습니다.
🧩 코드 구조 예시
const puppeteer = require('puppeteer');
const XLSX = require('xlsx');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
// 배민 셀프 로그인
await page.goto('https://self.baemin.com/login');
await page.type('#id', 'YOUR_ID');
await page.type('#pw', 'YOUR_PASSWORD');
await page.click('.btn_login');
await page.waitForNavigation();
// 주문 내역 페이지 이동
await page.goto('https://self.baemin.com/orders/history');
// 데이터 수집 로직 ...
// Excel 저장
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.json_to_sheet(orderData);
XLSX.utils.book_append_sheet(wb, ws, 'Orders');
XLSX.writeFile(wb, 'baemin_orders.xlsx');
await browser.close();
})();
위 코드는 기본적인 구조 예시이며, 실제로는
await page.waitForSelector()를 사용해
DOM 렌더링 완료 후 데이터를 추출하도록 설계하는 것이 중요합니다.
📊 자동화의 장점
- 매일 클릭 없이 주문 데이터가 자동으로 수집
- 직원별, 지점별 주문 분석에 활용 가능
- 시간 절약 및 데이터 관리 효율 극대화
🔍 마무리
이번 프로젝트는 단순한 데이터 크롤링을 넘어, 브라우저 자동화를 통한 업무 효율화라는 실질적인 가치를 제공합니다. 향후에는 정산 내역 자동 수집과 Google Sheets 실시간 동기화 기능까지 확장할 계획입니다.
관심 있으신 분들은 댓글로 남겨주세요!
댓글 없음:
댓글 쓰기