Files
KisStock/한국투자증권(API)/stocks_info/domestic_bond_code.py
2026-01-31 22:34:57 +09:00

64 lines
2.2 KiB
Python

'''장내채권 종목정보(bond_code.mst) 정제 파이썬 파일'''
import pandas as pd
import urllib.request
import ssl
import zipfile
import os
base_dir = os.getcwd()
def download_and_extract_file(url, output_dir, zip_filename, extracted_filename):
# Download the file
print(f"Downloading {zip_filename}...")
ssl._create_default_https_context = ssl._create_unverified_context
zip_filepath = os.path.join(output_dir, zip_filename)
urllib.request.urlretrieve(url, zip_filepath)
# Extract the file
print(f"Extracting {zip_filename}...")
with zipfile.ZipFile(zip_filepath, 'r') as zip_ref:
zip_ref.extractall(output_dir)
return os.path.join(output_dir, extracted_filename)
def get_bond_master_dataframe(file_path):
print("Parsing the file...")
with open(file_path, mode="r", encoding="cp949") as f:
lines = f.readlines()
data = []
for row in lines:
row = row.strip()
bond_type = row[0:2].strip()
bond_cls_code = row[2:4].strip()
stnd_iscd = row[4:16].strip()
rdmp_date = row[-8:].strip()
pblc_date = row[-16:-8].strip()
lstn_date = row[-24:-16].strip()
bond_int_cls_code = row[-26:-24].strip()
sname = row[16:-26].rstrip() # 종목명을 뒤에서부터 추출하여 남은 부분
data.append([bond_type, bond_cls_code, stnd_iscd, sname, bond_int_cls_code,
lstn_date, pblc_date, rdmp_date])
columns = ['유형', '채권분류코드', '표준코드', '종목명', '채권이자분류코드',
'상장일', '발행일', '상환일']
df = pd.DataFrame(data, columns=columns)
return df
# 채권종목코드 마스터파일 다운로드 및 파일 경로
url = "https://new.real.download.dws.co.kr/common/master/bond_code.mst.zip"
zip_filename = "bond_code.zip"
extracted_filename = "bond_code.mst"
file_path = download_and_extract_file(url, base_dir, zip_filename, extracted_filename)
# 데이터프레임 생성 및 엑셀 파일로 저장
df_bond = get_bond_master_dataframe(file_path)
# 엑셀 파일 저장
print("Saving to Excel...")
df_bond.to_excel('bond_code.xlsx', index=False)
print("Excel file created successfully.")