피드로 돌아가기
I Built a Telegram Bot That Searches, Monitors Prices and Lets You Buy and Sell. Here's How
Dev.toDev.to
Backend

Nuxt.js 데이터 레이어 추출을 통한 Headless Browser 없는 고효율 가격 모니터링 봇 설계

I Built a Telegram Bot That Searches, Monitors Prices and Lets You Buy and Sell. Here's How

Carter2026년 5월 2일3intermediate

Context

기존 Jiji와 같은 JS 렌더링 기반 사이트는 단순 HTTP Request로 데이터 수집이 불가능함. Selenium이나 Playwright 같은 Headless Browser 도입 시 발생하는 과도한 리소스 소모와 느린 응답 속도가 주요 병목 지점으로 분석됨.

Technical Solution

  • Nuxt.js 프레임워크의 특성을 활용하여 HTML 내 __NUXT_DATA__ 스크립트 태그에 내장된 JSON 데이터를 정규표현식으로 직접 추출하는 Scraping 전략 채택
  • Headless Browser 의존성을 완전히 제거하여 데이터 파싱 속도 향상 및 시스템 리소스 사용량 최소화
  • python-telegram-botConversationHandler를 통한 State-based 워크플로우 설계로 사용자 입력 순서를 제어하는 대화형 UX 구현
  • Telegram 서버의 file_id를 활용한 이미지 참조 방식으로 별도의 Image Hosting 인프라 구축 비용 제거
  • APScheduler 기반의 6시간 주기 Interval Job 설계를 통해 지속적인 가격 모니터링 및 자동 Alert 트리거 구조 확립
  • Telegram API의 4,096자 메시지 길이 제한 문제를 해결하기 위해 대량의 데이터를 개별 메시지로 분할 전송하는 예외 처리 로직 적용

1. JS 렌더링 사이트 스크래핑 전, HTML 소스 내 JSON 데이터 레이어(예: Nuxt, Next.js) 존재 여부를 먼저 확인하여 리소스 낭비 방지

2. 상태 기반 대화형 봇 설계 시, 다수 사용자의 동시 접속을 고려한 Session 데이터 관리 전략 수립

3. 외부 API 및 플랫폼 이용 시, 메시지 길이 제한이나 Rate Limit과 같은 인프라 제약 사항을 사전 파악하여 분할 전송 로직 구현

원문 읽기