본문 바로가기
Python/파이썬으로 퀀트 전략 구현하기

[python] 금융데이터 수집하기(2) - 상장종목 시세데이터 수집하기 ① | 상장 기업 목록과 종목코드 크롤링

by hyelllllog 2022. 6. 15.

[ 금융데이터 수집하기 시리즈]

(업데이트 시, 링크를 연결할 예정입니다)

 

(1) 주식 시세 데이터 수집하기 - 삼성전자

(2) 전 종목 시세데이터 수집하기 - 코스피, 코스닥 상장기업 리스트와 종목코드 크롤링

(3) 전 종목 시세데이터 수집하기 - 상장기업 전 종목 시세데이터 크롤링

(4) Opendart API로 재무제표 데이터 수집하기 - 업데이트 예정


안녕하세요! 혤로그 입니다🙂

오늘은 전 종목의 시세데이터 수집을 위해 상장 기업 목록과 종목 코드를 크롤링해보도록 하겠습니다.

 

라이브러리를 통해 데이터를 쉽게 가져오는 방법도 있지만,

저는 여러분이 다른 데이터를 수집할 때 응용하실 수 있도록

일반적인 크롤링 방식을 이용해보겠습니다 🧐

(맨 아래에 api 활용방법도 추가하였습니다. )


[ 상장 기업 목록 가져오기 ]

1️⃣ 크롤링 할 url 주소 확인하기

 

데이터를 크롤링하기 위해서 데이터를 가져올 수 있는 웹 페이지를 선정해야합니다.

저는 KRX로부터 상장 기업 목록 파일을 읽어오겠습니다.

🔸http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13

 

위 url을 클릭하면 한국거래소에서 제공하는 상장법인목록을 다운받을 수 있습니다.

상장된 회사와 해당 종목의 종목코드를 포함하고 있습니다.

종목코드와 회사명을 연결지어서 알고 있으면 데이터를 관리하기 편하기 때문에 위 파일을 이용하였습니다.

 

2️⃣ 종목코드 업데이트 함수 작성하기 

 

    def read_krx_code():
        # 상장 종목 목록 가져오기 
        url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13'
        krx = pd.read_html(url,header=0)[0]
        # 데이터 정리
        krx = krx[['종목코드','회사명']]
        krx = krx.rename(columns={'종목코드':'code','회사명':'company'})
        krx.code = krx.code.map('{:06d}'.format)

        krx.to_csv(f"{self.file_path}/listed_company.csv",index=False)    
        
        return krx

 

1. read_html을 통해 해당 url의 파일의 table 값을 읽어 Dataframe 형태로 저장합니다.

2. 해당 데이터에서 종목코드와 회사명만 추출합니다.

3. 칼럼명을 영문으로 바꿔줬습니다.

4. 종목코드는 6자리 수로 맞춰줬습니다. ( 종목코드 60 -> 종목코드 000060 )


 

[ FinanceDataReader 활용하기 ]

https://github.com/FinanceData/FinanceDataReader

 

GitHub - FinanceData/FinanceDataReader: Financial data reader

Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub.

github.com

financedatareader는 금융데이터를 가공하여 제공해주는 api로

한국거래소(krx), kospi, kosdaq, konex, nasdaq, 뉴욕증권거래소, s&p500 등의 시장 거래 종목의 데이터를 가지고 있습니다. 라이브러리와 메쏘드 호출만으로 데이터를 가져올 수 있다는 점에서 편하게 사용하실 수 있습니다.

 

1️⃣ financedatareader 설치하기

 

pip install finance-datareader

 

2️⃣ 코드 작성하기

 

import FinanceDataReader

df_krx = FinanceDataReader.StockListing("KRX")
df_krx.head()

1. StockListing 메쏘드를 통해 상장 종목의 정보를 확인할 수 있습니다. 

이 외에도 다양한 정보를 제공하고 있으며 사용 방법은 위 깃헙 페이지에서 확인하실 수 있습니다 🙂

 

>> 관련 책

https://link.coupang.com/a/qra6F

 

파이썬 증권 데이터 분석:파이썬 입문 웹 스크레이핑 트레이딩 전략 자동 매매

COUPANG

www.coupang.com