삶의 공유

[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[2] 본문

Data Scientist/Python

[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[2]

dkrehd 2022. 1. 30. 20:07
728x90
반응형

 

안녕하세요 ~

 

이번시간에는 가치평가를 하기 위한 필요한 지표들인 재무제표를 크롤링 하는 포스팅 입니다. 

네이버 금융에서 크롤링을 진행  예정입니다.

 

먼저 네이버 금융의 웹페이지가 어떻게 되어 있는지 하나씩 살펴보겠습니다. 삼성전자를 예시로 들어보겠습니다.

아래와 같이 삼성전자를 검색해서 > 종 정보를 클릭합니다.

 

 

 

아래로  내리시면 기업 실적 요약 정보를 크롤링해서 가져올  입니다.

 

 

 

코드를 짜기 위해 url 정보를 복사합니다.

 

https://finance.naver.com/item/main.naver?code=005930

 

위의 url 모든 종목에 대해서 가져오기 위해 code url로 분리합니다.

 

code = '005930'
URL = f"https://finance.naver.com/item/main.nhn?code={code}"

 

 

이제 크롤링 하기 위해 필요한 라이브러리들을 import 해줍니다.

 

import pandas as pd
import requests

그리고 이제 크롤링 하기 위한 코드를 작성합니다.

되게 간단하지요 ?

 

  • r = requests.get(URL) : URL을 인자로 넣어주어서 html 정보를 받아옵니다. 
  • df = pd.read_html(r.text)[3] : html 정보를 텍스트 형태로 read_html함수의 인자로 넣어 주어 데이터 테이블 형태로 바꿔 줍니다. 여러개의 테이블이 있기 때문에 배열로 받는데 그중 4번째 테이블이라서 [3]이라고 적어 준것 입니다.

 

r = requests.get(URL)
df = pd.read_html(r.text)[3]
df

 

결과가 잘 나온 것을   있습니다.

 

 

 

반응형

 

 

 

이제 여기서 우리가 원하는 형태의 데이터 형태로 가공 하겠습니다. 저는 다음과 같이 가공을 할 예정입니다. 

 

1) 연간 정보만 사용

2) DataFrame index를 연간 날짜로 변경

3) 주요 정보만 남겨서 종목당 1개의 Raw만 만들기 (단, 3개월마다 업데이트 필요)

 

마지막으로 이렇게 변경 된 형태로 우리는 DB화 할 것 입니다!

 

하나씩 해보겠습니다.

 

1) 연간 정보만 사용

 

 - 사용할 컬럼, 삭제할 컬럼 추출하기

 

  • cols = [] # 변경할 컬럼명 List
  • use_cols = [] # 사용할 컬럼명 List
cols = [] # 변경할 컬럼명 List
use_cols = [] # 사용할 컬럼명 List
i = 1
for column in df.columns:
    if i < 6:
        cols.append(column[1])
        use_cols.append(column)
    i += 1
cols

 

- 사용할 dataframe만 선정하기

 

df_sort = df[use_cols]
df_sort

 

 

- 컬럼명 바꾸기

df_sort.columns = cols
df_sort.index = df_sort['주요재무정보'] # 인덱스로 사용할 컬럼명
df_sort

 

 

 

 

 

 

2) DataFrame index를 연간 날짜로 변경!

- 행 <-> 열 전환 함수인 transpose()함수를 이용해서 행렬을 전환하여 데이터 가공하기 편한 형태로 바꿔주는 것으로 마무리 합니다.

 

df_semi = df_sort.transpose()
df_semi = df_semi.drop([df_semi.index[0]]) # 컬럼명 중복 인덱스 삭제
df_semi

 

 

3) 주요 정보만 남겨서 종목당 1개의 Raw만 만들기 (단, 3개월마다 업데이트 필요)

 

- 주요 정보만 남기기 위해 우리는 컬럼명을 선정 후 데이터를 산출해보겠습니다. 우선 필요한 컬럼명 입니다.

  • 최근 3년 평균 성장률(매출, 영업이익, 순이익) - 3개
  • 직전 연도 부채 비율 - 1개
  • EPS, PER, PBR, BPS, PEG, PSR, 적정주가 - 14개 (7개 x 2 (직전, 예상)

총 18개의 컬림이 필요합니다.

 

오늘 포스팅은 여기 까지 입니다. 

 

다음 포스팅에서는 이 18개의 데이터를 구해서 컬럼화 하는 내용에 대해서 다루어 보겠습니다. 

제 글을 읽어주셔서 감사합니다.

 

 

 

반응형