본문 바로가기
데이터분석/크롤링

파이썬 퀀트투자(3): 한국거래소 개별종목 지표 크롤링

by 코듀킹 2024. 10. 9.

 

앞서 한국거래소의 업종 분류 현황을 크롤링하는 방법에 대해서 알아보았습니다. 이번에는 한국거래소의 개별종목 지표 크롤링하는 방법에 대해서 알아보겠습니다.

 

개별종목 데이터를 크롤링하는 방법은 앞서 살펴본 방법과 매우 유사하며, 요청하는 쿼리 값에만 차이가 있습니다. 

 

 

 

이번에도 역시 사이트에서 CSV파일을 다운로드 받은 후, generate.cmd를 클릭하여 Payload를 확인합니다.

 

 

여기서 'tboxisuCd_finder_stkisu0_6', 'isu_Cd', 'isu_Cd2' 등의 항목은 조회 구분의 개별추이 탭에 해당하는 부분이므로 우리가 원하는 전체 데이터를 받을 때는 필요하지 않는 값입니다. 이를 제외하여 요청값을 Request URL에 제출하고, 받은 OTP 코드를 다시 download.cmd의 Requeat URL에 제출하면 해당 데이터 역시 쉽게 다운로드 할 수 있습니다.

 

import requests as rq
from io import BytesIO
import pandas as pd

gen_otp_url = 'http://data.krx.co.kr/comm/fileDn/GenerateOTP/generate.cmd'
gen_otp_ksq = {
    'searchType': '1',
    'mktId': 'ALL',
    'trdDd': biz_day,
    'csvxls_isNo': 'false',
    'name': 'fileDown',
    'url': 'dbms/MDC/STAT/standard/MDCSTAT03501'
}

headers = {'Referer': 'http://data.krx.co.kr/contents/MDC/MDI/mdiLoader',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}

otp = rq.post(gen_otp_url, gen_otp_ksq, headers=headers).text

down_url = 'http://data.krx.co.kr/comm/fileDn/download_csv/download.cmd'
krx_ind = rq.post(down_url, {'code': otp}, headers=headers)

krx_ind = pd.read_csv(BytesIO(krx_ind.content), encoding = 'EUC-KR')
krx_ind['종목명'] = krx_ind['종목명'].str.strip()
krx_ind['기준일'] = biz_day 

krx_ind.head()

 

 

 

 

다음편

 

파이썬 퀀트투자(4): 한국거래소 데이터 Mysql에 적재

지난 번에 한국거래소의 업종 분류 형황 데이터를 크롤링하는 방법과 한국거래소의 개별종목 지표 데이터를 크롤링하는 방법에 대해서 알아보았습니다. 이제 이 두개의 데이터를 하나로 합친

coduking.tistory.com

 

댓글