기본 콘텐츠로 건너뛰기

Puppeteer로 배민 셀프 주문 데이터를 자동으로 수집하기

Puppeteer로 배민 셀프 주문내역 자동 수집하기 | 개발 자동화 프로젝트

🚀 Puppeteer로 배민 셀프 주문 데이터를 자동으로 수집하기

최근 들어 배달의민족 셀프 시스템을 사용하는 점주들이 늘어나면서, 주문 데이터를 효율적으로 관리하고 분석하려는 수요가 커지고 있습니다. 하지만 수동으로 주문 내역을 다운로드하거나 복사하는 과정은 여전히 불편하죠.

이 문제를 해결하기 위해, 저는 Puppeteer를 이용해 배민 셀프 시스템의 주문 내역 페이지 (https://self.baemin.com/orders/history)에서 데이터를 자동으로 수집하고, 이를 Excel(xlsx) 파일로 저장하는 자동화 프로그램을 개발했습니다.


💡 사용 기술

  • Puppeteer — Headless Chrome 기반 브라우저 자동화
  • Node.js — 비동기 처리 및 파일 입출력 관리
  • xlsx — 주문 데이터를 Excel 파일로 변환

⚙️ 주요 기능

  1. 자동 로그인 (배민 셀프 계정 정보 입력)
  2. 주문 내역 페이지 접속 및 날짜 필터 설정
  3. 모든 페이지의 주문 데이터 수집
  4. 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 실시간 동기화 기능까지 확장할 계획입니다.


관심 있으신 분들은 댓글로 남겨주세요!

댓글

이 블로그의 인기 게시물

케이팝 데몬헌터와 감정일기

🎵 케이팝 데몬헌터 루미와 감정일기: 내향적 마음을 기록으로 풀어내다 “무대 위 화려함 뒤, 루미의 마음속 전투는 오직 자신만이 알고 있다.” 🌟 루미의 내향적 어려움 영화 케이팝 데몬헌터 에서 루미는 무대 위에서는 밝고 활기차지만, 실제로는 내향적인 성격과 불안, 자기 의심과 싸워야 합니다. 팬을 향한 감정과 음악적 표현으로 대중과 연결되지만, 내면의 감정을 관리하는 것은 결코 쉽지 않습니다. 📝 감정일기: 루미의 마음을 이해하는 새로운 관점 루미가 자신의 하루를 기록하고 감정을 글로 표현한다면, 내향적 성향으로 인해 억눌린 마음을 풀고 스스로를 이해하는 힘을 얻을 수 있습니다. 여기서 감정일기(Emotional Journal) 라는 도구가 큰 의미를 가집니다. 불안 관리: 공연 전 긴장과 불안을 기록하면서 원인과 패턴을 분석 자기 이해: 내향적 성격에서 오는 자기 의심과 감정을 구체화 창작 영감: 감정을 글로 풀어냄으로써 음악과 팬과의 소통에 새로운 아이디어 제공 🎶 음악과 팬 경험을 연결하는 감정 기록 루미가 감정일기를 통해 자신의 감정을 이해하고 정리한다면, 그것이 음악적 표현과 팬과의 소통에도 자연스럽게 반영됩니다. 즉, 감정일기는 단순한 기록이 아니라 자기 성장과 예술적 표현의 기반 이 됩니다. 🔮 Emotion Log: 내면을 기록하는  감정일기 Emotion Log는 감정을 기록하고, 시간대별 감정 패턴을 분석해주는  기반 감정일기 앱 입니다. 🍎 App Store에서 다운로드 🤖 Google Play에서 설치 💡 결론 루미처럼 내향적 성향을 가진 사람도, 감정일기를 활용하면 마음속 어려움을 정리하고 자신의 감정을 객관적으로 바라볼 수 있습니다. 무대 위 화려함 뒤 숨겨진 마음을 기록하는 것, 그것이 진짜 자기 이해와 성장의 시작입니다.

2025-11-18 핫이슈 분석

핫 이슈 분석 🔥 2025년 11월 18일 오늘 하루 뉴스 데이터를 기반으로 한 핫이슈, 수치 및 트렌드 분석 핵심 하이라이트: 3대 수치 오늘 가장 주목받은 구체적인 수치와 경제적 전망입니다. 3,953.94 코스피 시장 마감 지수 ('AI 거품론' 확산에 4000선 붕괴) 1,465.3원 원/달러 환율 종가 (7.3원 상승) (9개월만 최고치 기록) 1,968조원 3분기 가계신용 규모 (역대 최대, 둔화세 보였으나 규모 유지) 오늘의 긴급 이슈 상세 'AI 거품론' 확산 속 코스피 4000선 붕괴 큰손들의 엔비디아 매각 소식과 美 연준발 악재가 겹치며 시장의 AI 거품 논란이 확산, 코스피가 3% 넘게 급락하며 4000선이 깨졌습니다. 대통령실, 北 '대결적 기도' 논평에 '적대의사 없음' 강조 북한의 대남 비난 논평에 대해 대통령실이 '적대 의사 없음'을 강조하며 남북 간 신뢰 회복을 위한 노력을 지속하겠다는 입장을 표명했습니다. 삼성 HBM 美공급 확대에 특허괴물 또 발목 삼성전자의 HBM 미국 공급 확대에 맞춰 특허괴물(NPE)이 또다시 특허 침해 소송을 제기하며 첨단 산업 분야의 리스크가 부각되고 있습니다. 1. 오늘 하루 뉴스 테마별 비중 분석 오늘 하루 발행된 뉴스 기사 제목에서 주요 핫이슈 테마에 해당하는 키워드를 기준으로 집계한 결과입니다. (100건을 기준으로 분석 비율 조정) 시사점: '기업/투자/MOU' (27.0%)와 'AI/반도체/첨단기술' (21.6%) 관련 뉴스가 전체 절반에 가까운 비중을 차지하며 미래 기술과 경제 동향에 대한 높은 시장 관심도를 반영했습니다. 2. 오늘 가장 주목받은 핵심 이벤트 Top 5 단순 빈도를 넘어, 오늘 하루 사회적 파급력과 특이성이 가장 높았던 이슈들을 선별합니다. (정성적 분석 기반) #1 코스피 4000선 붕괴, AI 거품론에 시장 공포 확산 엔비디아 매각 등 'AI 거품론...
📱 감정을 코드로 담다 – 감정일기(Emotion Log)를 만든 기술 이야기 🌅 시작: 왜 감정일기 앱을 만들었을까? 어느 날, 무척 힘든 시간이였습니다. 어디선가 이런 글을 보았던 기억이 떠올랐습니다. “당신의 감정을 기록해보세요.” 그 순간, 문득 이런 생각이 들었습니다. “우리는 매일 수많은 감정을 느끼지만, 정작 그 감정들을 기록하고 돌아보는 시간은 얼마나 될까?” 그 질문이 바로 감정일기(Emotion Log) 의 출발점이었습니다. 단순히 하루를 기록하는 일기가 아니라, 나의 감정 변화를 이해하고 스스로를 돌보는 감정 관리 도구 를 만들고 싶었어요. 🎨 감정을 시각적으로 표현하다 처음엔 이런 고민이 있었습니다. “감정을 어떻게 시각적으로 표현하면 좋을까?” 글자로 쓰는 감정은 너무 평면적이라 느껴졌죠. 그래서 저는 색과 이모지를 통해 감정을 표현하기로 했습니다. 기쁨은 따뜻한 노랑, 슬픔은 차분한 파랑, 분노는 강렬한 빨강. 감정에 따라 앱의 배경 색과 분위기가 바뀌며, 사용자는 자신의 감정을 색으로 느낄 수 있습니다. 마치 앱이 함께 공감해주는 듯한 감각적인 경험을 주고 싶었어요. 🏗 오프라인에서도 완벽하게 동작하도록 감정은 언제, 어디서든 떠오릅니다. 인터넷이 없어도 그 순간의 감정을 기록할 수 있어야 했죠. 그래서 저는 로컬 우선(Local First) 구조를 선택했습니다. 모든 데이터는 먼저 스마트폰 내부에 저장되고, 나중에 네트워크가 연결되면 자동으로 동기화됩니다. 지하철 안에서도, 산책길에서도 — 감정의 순간을 놓치지 않도록 설계한 구조입니다. 💝 공감하는 앱을 만들기까지 감정일기의 핵심은 ‘공감’ 이었습니다. 단순한 일기장이 아니라, 사용자의 감정에 반응하고 위로를 건네는 앱을 만들고 싶었습니다. 그래서 감정 선택 후엔, 사용자의 감정에 맞춘 메시지가 자동으로 나타납니다. 예를 들어, 기쁨을 기록하면 “당...