반응형

개요

이번 포스팅은 코스닥 종목의 주요 재무재표를 네이버에서 크롤링할 생각입니다. 누구나 진행할 수 있게 구글에서 제공하는 colab을 이용할 예정입니다.

 

주식을 하는 사람 대부분은 아래와 같은 기업실적분석표를 봤을겁니다. 네이버 검색창에 주식 종목을 검색 후 들어가게 되면 아래와 같은표를 볼 수 있습니다.

 

바로 이 주요재무정보를 크롤링 할 예정이며, 코스닥에 상장된 모든 종목의 재무정보를 가져올 예정입니다.

라이브러리

#전처리 라이브러리
from tqdm import tqdm_notebook
import pandas as pd

#크롤링 라이브러리
import requests

코스닥 종목명 및 종목코드 불러오기

대한민국 대표기업공기 사이트에서 코스닥 종목 및 코드를 불러옵니다. 약 1610개의 종목을 불러왔으며, 종목코드의 경우 int타입으로 불러와 종목코드가 4자리또는 5자리의 경우 앞의 0이 사라져 추가잡업을 통해 0을 붙였습니다.

url = 'https://kind.krx.co.kr/corpgeneral/corpList.do'

kosdaq_code = pd.read_html(url+"?method=download&marketType=kosdaqMkt")[0]
kosdaq_code = kosdaq_code[['회사명','종목코드']]

# 종목코드가 int 타입이라 앞의 0이 사라짐, 다시 붙여주는 코드
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].astype('str')
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '00'+x if len(x) ==4 else x)
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '0'+x if len(x) ==5 else x)

 

네이버 재무재표 가져오기 불러오기

삼성전자의 주요 재무정보를 가져왔습니다. 앞서 불러온 1610개의 종목코드 for문을통해 재무정보를 가져올 수 있습니다.

# 삼성전자 종목코드
code = '005930'
url = f"https://finance.naver.com/item/main.nhn?code={code}"
# 데이터 얻기
res = requests.get(url)
# 재무정보 가져오기
df = pd.read_html(res.text)[3]

# 재무정보 인덱스 설정
df.set_index(df.columns[0],inplace=True)
df.index.rename('재무정보', inplace=True)

# 컬럼명 rename
df.columns = ['2019','2020','2021','2022E','2021.09','2021.12','2022.03','2022.06','2022.09','2022.12E']
df = df.reset_index()

삼성정자- 주요재무정보

반응형
반응형

미국주식 첫 포스팅으로 미국주식 종목을 불러오겠습니다. 

 

미국 주식은 크게 3개의 거래소에 상장된 주식들로 구성되어 있습니다.

  • NTSE(뉴욕 증권 거래소)
  • NASDAQ(나스닥 증권 거래소)
  • AMEX(아멕스)

미국주식을 하게되면 다우존스나 S&P500도 들어보셨을텐데 위의 3개의 거래소에 상장된 주식들이 편입하게 됩니다.

결론적으로 3개의 거래소에 상장된 주식들을 가져오면, 대부분의 미국 주식들을 불러올 수 있습니다.

 

Python을 통해 불러오며, FinanceDataReader라이브러리를 이용하도록 하겠습니다.

 

#라이브러리 설치

!pip install finance-datareader
import FinanceDataReader as fdr
import pandas as pd

 

#주식 종목 불러오기

#나스닥
nasdaq = fdr.StockListing('NASDAQ')
nasdaq['Indexes'] = 'NASDAQ'
print('나스닥 :', nasdaq.shape)

#뉴욕증권거래소
nyse = fdr.StockListing('NYSE')
nyse['Indexes'] = 'NYSE'
print('뉴욕증권거래소 :', nyse.shape)

#아멕스
amax = fdr.StockListing('AMEX')
amax['Indexes'] = 'AMEX'
print('아멕스 :', amax.shape)

 

자 나스닥과 뉴욕증권거래소, 아멕스의 주식 종목들을 가져왔습니다. 모든 주식종목들을 합치기 전에 각각의 거래소들을 확인할 수 있도록 Indexes Column을 생성하였습니다. 그럼 주식데이터들을 하나로 합치겠습니다.

 

# 데이터 합치기
df = pd.concat([nasdaq, nyse,amax])

# Symbol이 중복되는 데이터 제거
df = df.drop_duplicates('Symbol')

#데이터 shape 확인
print(df.shape)

# 상위 10개 데이터 확인
df.head(10)

총 7882개의 미국주식을 불러왔습니다. 상위 10개를 조회하니 나스닥 시총 상위 10개 종목들이 보입니다.

 

반응형

+ Recent posts