외부 데이터 크롤링과 다국어 처리 자동화 1. 배경 — 외부 연동 대신 크롤링 선택의 이유 REINDEERS 플랫폼은 각국의 표준, 인증, 관세 데이터를 기반으로 상품 정보를 구조화해야 했다. 그러나 각 기관의 공개 API는 존재하지 않거나 접근이 제한적이었다. 태국 TISI, 한국 UNIPASS, 중국 GB표준, 말레이시아 SIRIM 등은 모두 웹 기반 HTML 구조만 제공했다. 이에 따라 API 연동 대신 크롤링 구조를 도입했다. 크롤링은 인증/표준 데이터뿐 아니라 환율과 해운 스케줄에도 적용되었다. 환율은 4개 은행(방콕은행, 하나은행, 중국은행, 메이뱅크)에서 매일 수집되며, 해운 스케줄은 HMM, KMTC, SM Line 세 개 선사에서 크롤링된다. 이 모든 외부 데이터가 플랫폼의 가격 계산, 물류 일정, 인증 검증의 기초가 된다. 2. 국가별 스크래퍼 아키텍처 크롤러는 국가별로 독립적인 설정을 가진다. 각 크롤러는 Cloud Function에서 주기적으로 호출되며, 수집 주기는 데이터의 성격에 따라 다르다. 환율 데이터는 매일 1회, 해운 스케줄은 월 1회, 인증 데이터는 주 1회 수집된다. 스크래퍼는 계층 구조로 설계되어 있다. 최상위에 공통 인터페이스(Scraper Layer)가 있고, 그 아래에 국가별 구현이 존재한다. 공통 인터페이스는 HTTP 요청, 응답 파싱, 데이터 정규화, 에러 핸들링의 표준을 정의한다. 국가별 구현은 해당 사이트의 HTML 구조와 인증 방식에 맞춰 구체적인 파싱 로직을 담당한다. # Scraper architecture example class BaseScraper: def fetch(self, url): ... def parse(self, html):...