Captain's Log
← Observatory
Observatory·

Selenium으로 환율 수집 자동화 — 예외 처리와 DB 적재

Selenium으로 하나은행 환율을 수집하며 공휴일·오류 상황을 방어하고, 외부 dbio 모듈로 DB에 적재하는 과정을 정리한 기록. '오류를 만나며 완성해가는' 크롤링의 현실.

TrainingScrapingSelenium

코드 1, 코드 2, ... 성공, 최종

이 노트북에서 인상 깊었던 건 셀 제목들이었다. 코드 1 → 수집 오류: HTML을 잘못 불러온다 → 성공 → 최종 → 수정. 크롤링은 한 번에 완성되지 않는다. 오류를 만나고, 원인을 찾고, 고치는 과정 그 자체가 기록으로 남아 있었다.

모듈을 불러오는 경로 설정

작업 파일과 공용 모듈(dbio)의 위치가 달라서, sys.path 에 경로를 추가하는 법을 배웠다.

import sys, os
target_dir = os.path.abspath("../../")
if target_dir not in sys.path:
    sys.path.append(target_dir)
from dbio import to_db

공휴일 대응 로직

환율은 영업일에만 고시된다. 그래서 특정 날짜에 데이터가 없을 때를 대비한 방어 로직을 함수 안에 넣었다. 단순히 수집만 하는 게 아니라, "데이터가 없는 날"이라는 예외 상황을 정상 흐름으로 처리하는 감각을 배웠다.

정제 후 DB 적재

수집한 원본을 pandas 로 정제하고, 앞서 만든 to_db() 모듈 함수로 MySQL에 저장했다. 수집 코드와 DB 입출력 코드를 분리(모듈화) 하니, 다른 프로젝트에서도 from dbio import to_db 한 줄로 재사용할 수 있었다.

정리

가장 큰 배움은 "실패를 지우지 않는 것"이었다. 오류 셀을 남겨두니 같은 실수를 반복하지 않았고, 왜 이 코드가 이렇게 생겼는지가 노트북 안에 그대로 설명됐다. 항해일지를 쓰는 이유와 같은 맥락이다.