import win32com.client
import pythoncom
import pandas as pd
import numpy as np
import time
import requests
import urllib3
from bs4 import BeautifulSoup
import json
import re
urllib3.disable_warnings()
# encparam 추출 함수 : naver증권에서 재무데이터 호출시 encparam이 필요하기 때문에 추출하는 함수
def get_encparam():
encparam=""
URL = "https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd=005930"
response_data = requests.get(URL, verify=False, headers={'referer': "https://finance.naver.com/item/coinfo.nhn?code=005930"})
html = response_data.text
regex = re.compile("encparam.*")
mo = regex.search(html)
if mo != None:
encparam = mo.group()[10:].replace('\'', '')
#print(mo.group()[10:].replace('\'',''))
return encparam
# 특정 기업의 최근 5개 분기 대차대조표를 Dataframe으로 반환
def get_balancesheet(shcode):
df_raw = pd.DataFrame(index=range(0,251),columns=['ACC_NM', 'DATA1', 'DATA2','DATA3','DATA4','DATA5'])
df_modify = pd.DataFrame(index=range(0,6),columns=range(0,251))
URL = "https://navercomp.wisereport.co.kr/v2/company/cF3002.aspx?cmp_cd="+ shcode + "&frq=1&rpt=1&finGubun=MAIN&frqTyp=1&cn=&encparam="+get_encparam()
response_data = requests.get(URL, verify=False, headers={'referer': "https://navercomp.wisereport.co.kr/v2/company/c1030001.aspx?cmp_cd=005930&cn="})
html = response_data.text
jsonObject = json.loads(html)
jsonArray_YYMM = jsonObject.get("YYMM")
jsonArray_DATA = jsonObject.get("DATA")
for i in range(len(jsonArray_DATA)):
df_raw.iloc[i, 0] = jsonArray_DATA[i]['ACC_NM']
df_raw.iloc[i, 1] = jsonArray_DATA[i]['DATA1']
df_raw.iloc[i, 2] = jsonArray_DATA[i]['DATA2']
df_raw.iloc[i, 3] = jsonArray_DATA[i]['DATA3']
df_raw.iloc[i, 4] = jsonArray_DATA[i]['DATA4']
df_raw.iloc[i, 5] = jsonArray_DATA[i]['DATA5']
df_modify = df_raw.transpose()
df_modify = df_modify.rename(columns=df_modify.iloc[0]) #첫번째 행을 컬럼으로 지정
df_modify = df_modify.drop(index='ACC_NM')
# index이름을 분기명으로 변경
df_modify = df_modify.rename(index={'DATA1': jsonArray_YYMM[0][:7].replace('/','.')})
df_modify = df_modify.rename(index={'DATA2': jsonArray_YYMM[1][:7].replace('/','.')})
df_modify = df_modify.rename(index={'DATA3': jsonArray_YYMM[2][:7].replace('/','.')})
df_modify = df_modify.rename(index={'DATA4': jsonArray_YYMM[3][:7].replace('/','.')})
df_modify = df_modify.rename(index={'DATA5': jsonArray_YYMM[4][:7].replace('/','.')})
return df_modify
shcode = "005930" # 삼성전자
print(get_balancesheet(shcode))
print(get_balancesheet(shcode).iloc[0][0])
'Language > python' 카테고리의 다른 글
[ Python library ] 상장되어있는 종목코드 리스트 출력 함수(dart api 이용) (0) | 2021.06.08 |
---|---|
[ Python conda ] conda에서 github로부터 package install 하기 (0) | 2021.06.04 |
파이썬으로 주식 포트폴리오구성 (0) | 2021.06.03 |
[ Python library ] 우선주를 보통주로 변환 함수 (0) | 2021.06.03 |
[ Python library ] 주식 종목명 추출 함수(naver증권 web crolling) (0) | 2021.06.03 |