728x90

주식관련 프로그램(앱)을 개발하는 도중 실시간으로 주식데이터를 어떻게 가져올까 고민하던도중

파싱을 통해 데이터를 가져오고자 해결방법이 떠올랐다.

 

간단하게 전체과정을 설명하자면

 

pandas를 통해 전체상장된 주식들에 대한 종목명:종목코드를 

엑셀로 알맞게 저장한다음 

이름을 검색하면 그에 대한 종목코드를 반환하여

 

finance.naver.com/item/sise_day.nhn?code=!!!종목코드!!!

로 들어가 해당 주식에대한 날짜 종가 시가 고가 거래량 등등을 저장한다

 

 

1. pandas라이브러리 설치하기

 

python -m pip install --upgrade pip  ( pip 는 항상 먼저 업그레이드하는 습관.,...)

 

pip install pandas ( 판다르 라이브러리 설치)

 

 

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

위에 링크는 한국증권거래소에서 제공하는 상장법인목록 엑셀파일이다.

 

 

 

import pandas as pd 

#모든 상장된 주식에 대한 종목명,종목코드 등등 여러정보를 담고있는 엑셀파일
stock_code = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', header=0)[0] 
#우리에게 필요한정보는 회사명:종목코드 이므로 나머지 데이터들은 제거
stock_code = stock_code[['회사명', '종목코드']] 
#종목코드는 6자리이므로 6자리로 format
stock_code.code = stock_code.code.map('{:06d}'.format) 

 

company='LG화학'
#LG화학의 종목코드를 code에 담는다.
code = stock_code[stock_code.company==company].code.values[0].strip() ## strip() : 공백제거
#크롤링할때 page=1,2,3,4,5....인데 한페이지의 데이터만 크롤링할거라 page는 1로 저장
page = 1

 

#이부분은 직접 code부분에 상장코드를 들어가보면 이해가 될것이다. code부분을 code로 foramt
url = 'http://finance.naver.com/item/sise_day.nhn?code={code}'.format(code=code)
#url 에 page추가 1페이지당 약4~5일? 의 데이터들이 담겨있음
url = '{url}&page={page}'.format(url=url, page=page)
print(url)
#html을 불러옴
df = pd.read_html(url, header=0)[0]
#출력
df.head()

 

df = pd.DataFrame()
for page in range(1,21):
    url = 'http://finance.naver.com/item/sise_day.nhn?code={code}'.format(code=code)     
    url = '{url}&page={page}'.format(url=url, page=page)
    print(url)
    df = df.append(pd.read_html(url, header=0)[0], ignore_index=True)
    
    
#공휴일, 거래정지등 NaN값이 있을것같아서 결측값이 있는 행을 제거함
df = df.dropna()
#df에 담긴 10개의 데이터 출력
df.head(10)
#df.to_excel('lg화학df.xlsx')

 

LG화학의 주가데이터파일이 잘출력된다. 

 

df.to_excel('lg화학df.xlsx') 코드를 마지막에 추가하면 df을 엑셀파일로 저정할수있다. (pandas 데이터프레임을 엑셀로 저장하기)

 

엑셀파일로 성공적으로 저장했으며

 

데이터프레임도 잘 저장되어있다.

for반복문에 범위만 바꾸면 2020-01-29이전의 데이터들도 모두 저장할수있다.

728x90

+ Recent posts