본문 바로가기
프로그래밍

💻 파이썬으로 저축은행 12개월 예금 금리 상위 30개 조회하기 – 코드 설명

by 팡규다요 2025. 7. 11.

📌 1. API 기본 설정

import requests  # HTTP 요청을 보내기 위한 라이브러리 불러오기

url = "https://finlife.fss.or.kr/finlifeapi/depositProductsSearch.json"  # 금융감독원 예금상품 API 주소
auth_key = "인증키"  # 본인의 인증키 (공공데이터 포털 등에서 발급받아야 함)
page = 1  # 첫 페이지부터 시작

all_base_list = []  # 모든 상품 기본정보를 저장할 리스트
all_option_list = []  # 금리 정보(옵션 리스트)를 저장할 리스트

 

📌 2. 전체 페이지 순회하며 데이터 수집

while True:  # 페이지를 계속 반복하며 조회
    params = {
        "auth": auth_key,
        "topFinGrpNo": "030300",  # 030300은 저축은행 그룹 코드
        "pageNo": str(page)  # 현재 페이지 번호를 문자열로 전달
    }

    response = requests.get(url, params=params)  # API 요청 보내기
    if response.status_code != 200:  # 응답이 실패한 경우
        print(f"❌ 요청 실패 (page {page}):", response.status_code)
        break  # 루프 종료

    data = response.json()  # 응답을 JSON 형태로 파싱
    result = data.get("result", {})  # result 키 안에 필요한 데이터가 들어있음
    base_list = result.get("baseList", [])  # 상품 기본 정보 리스트
    option_list = result.get("optionList", [])  # 상품 금리 옵션 리스트

    if not base_list:  # baseList가 비어있으면 더 이상 페이지 없음
        break

    all_base_list.extend(base_list)  # 지금 페이지의 baseList를 전체 리스트에 추가
    all_option_list.extend(option_list)  # optionList도 마찬가지로 추가
    page += 1  # 다음 페이지로 이동

print(f"\n✅ 모든 페이지 로딩 완료 (총 {page - 1}페이지)\n")  # 페이지 로딩 완료 메시지

 

📌 3. 12개월 상품 필터링 + 중복 제거

filtered = []  # 조건에 맞는 최종 상품들을 저장할 리스트
seen = set()  # 중복 제거를 위한 집합 (상품코드, 금리, 우대금리)

for base in all_base_list:  # 전체 상품 기본 정보 반복
    fin_prdt_cd = base.get("fin_prdt_cd")  # 상품 코드
    kor_co_nm = base.get("kor_co_nm")  # 은행 이름
    fin_prdt_nm = base.get("fin_prdt_nm")  # 상품 이름
    dcls_month = base.get("dcls_month")  # 공시 기준 월 (예: 202507)

    for opt in all_option_list:  # 전체 금리 옵션 정보 반복
        if opt.get("fin_prdt_cd") == fin_prdt_cd and opt.get("save_trm") == "12":  # 상품코드가 일치하고, 12개월 상품일 경우
            rate = opt.get("intr_rate")  # 기본금리
            rate2 = opt.get("intr_rate2")  # 우대금리

            key = (fin_prdt_cd, rate, rate2)  # 중복 체크를 위한 키 생성
            if key in seen:  # 이미 처리한 조합이면 무시
                continue
            seen.add(key)  # 처음 보는 조합이면 기록

            filtered.append({  # 최종 리스트에 정보 추가
                "은행": kor_co_nm,
                "상품": fin_prdt_nm,
                "기본금리": rate,
                "우대금리": rate2,
                "공시월": dcls_month
            })

 

📌 4. 기본금리 기준으로 내림차순 정렬

sorted_filtered = sorted(
    filtered,
    key=lambda x: x["기본금리"] if x["기본금리"] is not None else 0,
    reverse=True
)

 

📌 5. 출력 (상위 30개만)

print("📋 12개월 상품 중 기본금리 상위 30개:")
for i, item in enumerate(sorted_filtered[:30], 1):
    print(f"{i:2d}. {item['은행']} - {item['상품']} | 기본금리: {item['기본금리']}%, 우대금리: {item['우대금리']}% | 공시월: {item['공시월']}")

 

✅ 실행 결과 예시

📋 12개월 상품 중 기본금리 상위 30개:
 1. OO저축은행 - 슈퍼정기예금 | 기본금리: 4.80%, 우대금리: 5.10% | 공시월: 202507
...
30. XX저축은행 - 정기예금Plus | 기본금리: 3.60%, 우대금리: 3.90% | 공시월: 202507

파이썬으로 조회된 저축은행 정기예금 상위 30개

 

🔐 참고사항

  • 이 API는 실시간 금리와 다를 수 있습니다. 공시기준 금리이므로, 실제 가입 전에는 해당 저축은행 웹사이트에서 확인이 필요합니다.
  • 인증키는 금융감독원 금융소비자정보포털에서 신청 후 발급받을 수 있습니다.