파이썬(Python)/웹스크롤링

[Python] 네이버 금융 주식 정보 가져오기 (ex. 삼성전자)

끄적끄적아무거나 2021. 11. 9. 08:46
반응형

 

목차

     

     

     

    [Python] 네이버 금융 주식 정보 가져오기 : pykrx 모듈 소개

     

    BS4나 Selenium이나 Pandas의 html read 함수를 사용해서 주식 정보를 가져오려고 시도 했다면 그 과정이 만만치 않음을 알 수 있습니다.

     

    pykrx 모듈은 네이버금융(Naver finance)와 KRX 정보 데이터 시스템에서 주가 정보를 지속적으로 스크래핑(scraping) 하고 Github에서 업데이트 해줍니다. 

     

    해당 API를 사용하면 단 한줄로 주가 정보를 쉽게 가져 올 수 있습니다. pykrx의 상세 사용법을 알고 싶다면 위에 링크를 클릭해서 확인하시면 됩니다.

     

    pykrx를 사용하기 위해서는 아래와 같이 설치를 해주어야 합니다. 

     

    pip install pykrx

     

     

     

     

    [Python] 네이버 금융 주식 정보 가져오기 : get_market_ohlcv_by_date (삼성전자)

     

    삼성전자의 Ticker 번호를 우선 확인해야 합니다. 번호는 네이버 금융에서 삼성전자를 검색하시면 

     

     

     

    위 그림처럼 "005930"이라는 번호를 확인할 수 있는데 이는 삼성전자 주식에 대한 고유 번호로 생각하시면 됩니다. 

     

    코드>>

    from pykrx import stock
    
    data = stock.get_market_ohlcv_by_date("20200101", "20211107", "005930")
    print(data)

     

    결과>>

                   시가     고가     저가     종가       거래량
    날짜
    2020-01-02  55500  56000  55000  55200  12993228
    2020-01-03  56000  56600  54900  55500  15422255
    2020-01-06  54900  55600  54600  55500  10278951
    2020-01-07  55700  56400  55600  55800  10009778
    2020-01-08  56200  57400  55900  56800  23501171
    ...           ...    ...    ...    ...       ...
    2021-11-01  70200  70600  69900  69900  11503729
    2021-11-02  70800  72200  70700  71500  16812570
    2021-11-03  71700  71700  70100  70400  12770428
    2021-11-04  71200  71600  70500  70600  11818987
    2021-11-05  71600  71600  70200  70200  12605513
    
    [457 rows x 5 columns]
    반응형

     

     

    주석>>

     

    3번 라인 : get_market_ohlcv_by_date 함수를 사용해서 시가, 고가, 저가, 종가, 거래량 정보를 불러 옵니다. 입력 값으로 불러올 주가의 시작일, 종료일, Ticker 번호 를 입력합니다. 

     

    결과에서 확인할 수 있듯이 Pandas Dataframe 형태로 결과가 나옵니다. Dataframe을 이용한 편집 및 사용방법은 아래 링크를 참조하시길 바랍니다. 

     

     

    [Python] Pandas DataFrames이란? 선언, 데이터 찾기, 정렬하기 예제

    목차 [Python] Pandas DataFrames이란? 파이썬의 판다스는 데이터 처리에 용이한 라이브러리 입니다. 앞서 설명한 Pandas Series와 마찬가지로 DataFrames은 데이터를 엑셀과 비슷한 방식으로 관리하기 위해

    scribblinganything.tistory.com

     

     

     

     

    [Python] 네이버 금융 주식 정보 가져오기 : get_market_fundamental_by_date(삼성전자)

     

    이번에는 재무제표에서 투자의 가장 핵심 요소들인 BPS, PER, PBR, EPS, DIV, DPS 값을 불러오는 함수에 대해 알아 보겠습니다. 

     

    코드>>

    from pykrx import stock
    
    data = stock.get_market_fundamental_by_date("20200101", "20211107", "005930")
    print(data)

     

    결과>>

                  BPS    PER   PBR   EPS   DIV   DPS
    날짜
    2020-01-02  35342   8.54  1.56  6461  2.57  1416
    2020-01-03  35342   8.59  1.57  6461  2.55  1416
    2020-01-06  35342   8.59  1.57  6461  2.55  1416
    2020-01-07  35342   8.64  1.58  6461  2.54  1416
    2020-01-08  35342   8.79  1.61  6461  2.49  1416
    ...           ...    ...   ...   ...   ...   ...
    2021-11-01  39406  18.20  1.77  3841  4.28  2994
    2021-11-02  39406  18.61  1.81  3841  4.19  2994
    2021-11-03  39406  18.33  1.79  3841  4.25  2994
    2021-11-04  39406  18.38  1.79  3841  4.24  2994
    2021-11-05  39406  18.28  1.78  3841  4.26  2994
    
    [457 rows x 6 columns]

     

    주석>>

     

    사용방법은 함수만 다르고 입력 방식은 동일 합니다. 

     

     

     

     

     

    [Python] 네이버 금융 주식 정보 가져오기 : 삼성전자 종가, PER 변화 그래프로 그리기

     

    앞서 get_market_fundamental_by_date 함수를 사용해서 EPS 정보를 가져올 수 있었습니다. 이번에는 가져온 EPS 정보를 통해 Matplotlib 모듈을 사용해서 그래프를 그려보도록 하겠습니다. 

     

    코드>>

    from pykrx import stock
    
    data0 = stock.get_market_ohlcv_by_date("20200101", "20211107", "005930")
    data1 = stock.get_market_fundamental_by_date("20200101", "20211107", "005930")
    
    import matplotlib.pyplot as plt
    
    plt.subplot(211)
    plt.plot(data0.index, data0['종가'], color = "green", label='삼전주가')
    plt.ylabel("Close Value")
    plt.legend()
    
    plt.subplot(212)
    plt.plot(data1.index, data1["PER"], color = "brown", label = "삼전PER")
    plt.ylabel("PER")
    plt.legend()
    
    plt.show()

     

    결과>>

     

     

     

    반응형