updated_at: 2024-12-14 11:11

Fnguide 재무제표데이터 크롤링

https://comp.fnguide.com/SVO2/asp/SVD_FinanceRatio.asp?pGB=1&cID=&MenuYn=Y&ReportGB=D&NewMenuID=104&stkGb=701&gicode=A005930 을 크롤링하는 예제

import pandas as pd

class Fnguide():
  def __init__(self, parent=None):
    super().__init__()

  def crawalFinance(self):
    """
    '매출액', '매출총이익', '영업이익', '당기순이익', '자산', '부채', '자본', '영업활동으로인한현금흐름'
    :param code:
    :return:
    """
    sCode = 'A005930' # 삼성전자
    url = 'https://comp.fnguide.com/SVO2/asp/SVD_FinanceRatio.asp?pGB=1&cID=&MenuYn=Y&ReportGB=D&NewMenuID=104&stkGb=701&gicode=' + sCode
    fr_tables = pd.read_html(url)
    temp_df = fr_tables[0]
    try:
      # print('temp_df.columns[0]', temp_df.columns[0])
      temp_df = temp_df.set_index(temp_df.columns[0])
      temp_df = temp_df.loc[['유동비율계산에 참여한 계정 펼치기',  # 유동비율(유동자산 / 유동부채) * 100
                              '부채비율계산에 참여한 계정 펼치기',  # 부채비율(총부채 / 총자본) * 100
                              '영업이익률계산에 참여한 계정 펼치기',  # 영업이익률(영업이익 / 영업수익) * 100
                              'ROA계산에 참여한 계정 펼치기',  # ROA(당기순이익(연율화) / 총자산(평균)) * 100
                              'ROIC계산에 참여한 계정 펼치기']]  # ROIC(세후영업이익(연율화)/영업투하자본(평균))*100
      temp_df.index = ['유동비율', '부채비율', '영업이익률', 'ROA', 'ROIC']
      # return temp_df

      fs_df = temp_df.astype('float64')
      for yyyymm, column in fs_df.iteritems():
        print(sCode, yyyymm, column)
    except ValueError as e:
      print('I got a ValueError - reason "%s"' % str(e))
    except KeyError as e:
      print('I got a KeyError - reason "%s"' % str(e))
    finally:
      pass

if __name__ == "__main__":
  fnguide = Fnguide()
  fnguide.crawalFinance()  # '매출액', '매출총이익', '영업이익', '당기순이익', '자산', '부채', '자본', '영업활동으로인한현금흐름'

결과

A005930 2018/12 유동비율     252.9
부채비율      37.0
영업이익률     24.2
ROA       13.8
ROIC      30.4
Name: 2018/12, dtype: float64

A005930 2019/12 유동비율     284.4
부채비율      34.1
영업이익률     12.1
ROA        6.3
ROIC      13.2
Name: 2019/12, dtype: float64

A005930 2020/12 유동비율     262.2
부채비율      37.1
영업이익률     15.2
ROA        7.2
ROIC      17.2
Name: 2020/12, dtype: float64

A005930 2021/12 유동비율     247.6
부채비율      39.9
영업이익률     18.5
ROA        9.9
ROIC      23.9
Name: 2021/12, dtype: float64

A005930 2022/12 유동비율     278.9
부채비율      26.4
영업이익률     14.4
ROA       12.7
ROIC      25.9
Name: 2022/12, dtype: float64
평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글