삶의 공유
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[2] 본문
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[2]
dkrehd 2022. 1. 30. 20:07
안녕하세요 ~
이번시간에는 가치평가를 하기 위한 필요한 지표들인 재무제표를 크롤링 하는 포스팅 입니다.
네이버 금융에서 크롤링을 진행 할 예정입니다.
먼저 네이버 금융의 웹페이지가 어떻게 되어 있는지 하나씩 살펴보겠습니다. 삼성전자를 예시로 들어보겠습니다.
아래와 같이 삼성전자를 검색해서 > 종합 정보를 클릭합니다.
아래로 쭉 내리시면 기업 실적 요약 정보를 크롤링해서 가져올 것 입니다.
코드를 짜기 위해 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개의 데이터를 구해서 컬럼화 하는 내용에 대해서 다루어 보겠습니다.
제 글을 읽어주셔서 감사합니다.
'Data Scientist > Python' 카테고리의 다른 글
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[4] (0) | 2022.02.03 |
---|---|
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[3] (0) | 2022.01.30 |
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[1] (0) | 2022.01.24 |
[Python활용]텍스트 마이닝을 위한 konlpy 설치(MAC) (5) | 2022.01.17 |
[Python기초] Seaborn을 이용한 데이터 시각화 (0) | 2022.01.17 |