def get_fin(corp_code, bgn_de='20200101'): api_key = '594f236d3b7d44d17e2d2b481e785af41fbf0c15' dart.set_api_key(api_key=api_key) reports = dart.filings.search(corp_code=corp_code, bgn_de=bgn_de) for report in reports: if (report.report_nm.find('매출액또는손익구조') != -1): tpage = report.pages[0] html = tpage.html bs = BeautifulSoup(html, 'html.parser') tlist = bs.find_all('span', {'class': 'xforms_input'}) 매출액 = tlist[1].text 영업이익 = tlist[5].text 당기순이익 = tlist[13].text 자산 = tlist[18].text 부채 = tlist[20].text 자본총계 = tlist[22].text 코멘트 = tlist[26].text return { '매출액': 매출액, '영업이익': 영업이익, '당기순이익': 당기순이익, '자산': 자산, '부채': 부채, '자본총계': 자본총계, '코멘트': 코멘트 }
def __crawl_quarterly_indicators_by_code(self, code): """ @param code: @return: """ # Gather Balance Sheet, Income Statement by DartCrawler # Gather Stock Amount # Compute and Set All into QuarterlyIndicator Model # -> EPS, BPS, ROE, ROA dart.set_api_key(consts.DART_KEY) corp_code = Company.objects.get(code=code).corp_code # single_corp = self.__crawl_simple_financial_statements(corp_code, "2019", 4) # single_corp = self.__crawl_simple_financial_statements(corp_code, "2019", 3) # single_corp = self.__crawl_simple_financial_statements(corp_code, "2019", 2) # single_corp = self.__crawl_simple_financial_statements(corp_code, "2019", 1) # single_corp = self.__crawl_quarterly(corp_code, "2019", 4) # single_corp = dart_finance.get_single_corp(corp_code=corp_code, bsns_year="2019", reprt_code=consts.REPORT_CODE_MAPPER["1"]) # single_corp = dart_finance.get_single_corp(corp_code=corp_code, bsns_year="2019", reprt_code=consts.REPORT_CODE_MAPPER["3"]) single_corp = dart_finance.get_single_corp( corp_code=corp_code, bsns_year="2019", reprt_code=consts.REPORT_CODE_MAPPER["2"]) # single_corp = dart_finance.get_single_corp(corp_code=corp_code, bsns_year="2019", reprt_code=consts.REPORT_CODE_MAPPER["1"]) print(type(single_corp)) return single_corp
def dart(local): import dart_fss if local: env_key = 'DART_API_KEY' else: env_key = 'DART_API_TEST_KEY_V3{}'.format(sys.version_info[1]) api_key = os.getenv(env_key) if api_key is None: pytest.skip('Please, set valid "{}" env variable'.format(env_key)) dart_fss.set_api_key(api_key) return dart_fss
def __init__(self): db_url = URL(drivername="mysql+mysqldb", username=cf.db_id, password=cf.db_passwd, host=cf.db_ip, port=cf.db_port, database='daily_buy_list') self.db_engine = create_engine(db_url) # 자신의 Dart API 인증키 입력 dart.set_api_key(cf.dart_api_key) # DART 공시된 회사 리스트 반환 self.crp_list = dart.get_corp_list() # 모든 종목 코드 가져오기 self._get_stock_item_all()
def get_dart(): api_key = '35d444d5a2ca8c271de34c8d296baf7474c37035' dart.set_api_key(api_key=api_key) # 코스피 시총 상위 50개 기업 가져오기 kospi = pd.read_excel('./kospi top 50.xlsx') print(kospi['corp']) corps = kospi['corp'] # DART 에 공시된 회사 리스트 불러오기 corp_list = dart.get_corp_list() # corp_df = pd.DataFrame() con = sqlite3.connect("./kospi.db")
def get_finance_all(): import datetime import dart_fss as dart # Open DART API KEY 설정 api_key="956243c104077738ebc3c93bd62c3e0c019eb877" dart.set_api_key(api_key=api_key) # 현재 날짜 불러오기 now = datetime.datetime.now() nowDate = now.strftime('%Y%m%d%H%M') # 검색 시작 날짜 bgn_de = '20170101' # 검색 종료 날짜 end_de = now.strftime('%Y%m%d') # 모든 상장된 기업 리스트 불러오기 corp_list = dart.get_corp_list() # 원하는 기업이름 입력 corp_name = '만도' corp_code = corp_list.find_by_corp_name(corp_name=corp_name)[0] corp_code = corp_code._info['corp_code'] print(corp_code) corp_code = "01042775" print(corp_code) # 2019년 01월 01일에 올라온 연결재무제표부터 현재까지 검색 # 사업 보고서 # fs = dart.fs.extract(corp_code=corp_code, bgn_de=bgn_de, end_de=end_de, lang='ko', separator=False) # 반기 보고서 [report_tp='half'] # fs = dart.fs.extract(corp_code=corp_code, bgn_de=bgn_de, end_de=end_de, report_tp='half', lang='ko', separator=False) # 분기 보고서 [report_tp='quarter'] fs = dart.fs.extract(corp_code=corp_code, bgn_de=bgn_de, end_de=end_de, report_tp='quarter', lang='ko', separator=False) # 재무제표 일괄저장 (default: 실행폴더/fsdata/{corp_code}_{report_tp}.xlsx) filename = corp_name + '_' + nowDate + '.xlsx' # path = 'C:/Users/User/hb_jeong/Desktop/' fs.save(filename=filename)
import dart_fss as dart import pandas as pd from datetime import datetime, timedelta # Open DART API KEY 설정 api_key = '8a21428e7aff607d8bfb0963894c7a030650cf4e' dart.set_api_key(api_key=api_key) # DART 에 공시된 회사 리스트 불러오기 corp_list = dart.get_corp_list() # 검색 name = input("회사이름: ") corp_name = corp_list.find_by_corp_name(name, exactly=True)[0] corp_name = str(corp_name) corp_nums = None # 회사고유코드 담을 변수 for i in range(1, len(corp_name)): if corp_name[i] == "]": corp_nums = corp_name[1:i] break start = str(datetime.now() + timedelta( days=-365))[:10] # (-365, 즉 지금으로부터 1년전 공시자료부터 최신까지 검색을 위한 기간 설정) date_start = str(start).replace('-', '').replace(' ', '') titles = [] for i in range(1, 3): result = dart.filings.search( corp_code=corp_nums, bgn_de=str(date_start), last_reprt_at='N', pblntf_ty=None, pblntf_detail_ty=None,
def __init__(self): api_key = 'd617ec8690f8cafd5d081e00a1501565e137f23e' dart.set_api_key(api_key=api_key) self.log_notfound = self.setup_logger('log1', './logs/notfound.log', empty_formatter) self.log_noreport = self.setup_logger('log4', './logs/noreport.log', empty_formatter)
from bs4 import BeautifulSoup import re from pathlib import Path from zipfile import ZipFile from io import BytesIO import dart_fss as dart from sqlalchemy import create_engine engine = create_engine("mssql+pyodbc://DESKTOP-8700K/stock?driver=SQL+Server", echo=False) crtfc_key = '0d4bf392bc8fd6c4c5db87eb977fd7bc030f1ade' dart.set_api_key(api_key=crtfc_key) if True: df = pd.read_csv('stock_owner.csv') #df['stock_code'] = 'A' + df['stock_code'] # #df.drop(columns=['x'], inplace=True) #df = df.fillna('') print(df.head()) #df.to_csv('test.csv', index=False, encoding='utf-8-sig') df.to_sql('stock_owner', engine, if_exists='replace') exit(0) if False: corp_list = dart.get_corp_list() corp_list._profile = True
''') return stockcodes # if __name__ == "__main__": # for i, stockcode in enumerate(['079940','079940','079940','079940']): # import time # time.sleep(60*20) dart.set_api_key(api_key=api_key) # 인증 설정 # 모든 상장된 기업 리스트 불러오기 corp_list = dart.get_corp_list() for j, stockcode in enumerate(get_stockcodes()): start_time = datetime.now() ret = [] try: # ret.append(DartParser(stockcode=stockcode, from_date_searching='20170401', to_date_searching='20170515', year='2017', target_quarter='1Q').get_result()) # ret.append(DartParser(stockcode=stockcode, from_date_searching='20170601', to_date_searching='20170814', year='2017', target_quarter='2Q').get_result()) # ret.append(DartParser(stockcode=stockcode, from_date_searching='20170901', to_date_searching='20171115', year='2017', target_quarter='3Q').get_result()) # ret.append(DartParser(stockcode=stockcode, from_date_searching='20180101', to_date_searching='20180415', year='2017', target_quarter='4Q').get_result())
def __init__(self): """ """ dart.set_api_key(consts.DART_KEY)
bot = telegram.Bot(token=API_TOKEN) chat_id = "XXXXXXXXX" # 텔레그램 updater updater = Updater(token=API_TOKEN, use_context=True) job_queue = updater.job_queue # job_queue는 텔레그램 오브젝트 # 텔레그램 Dispatcher 얻기 dispatcher = updater.dispatcher # Open DART API KEY 설정 import dart_fss as dart from dart_fss import get_corp_list dart_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' dart.set_api_key(api_key=dart_key) # 시작일자, 종료일자 종료일자 = datetime.now().strftime('%Y%m%d') 시작일자 = (datetime.now() - timedelta(days=30)).strftime('%Y%m%d') 단어 = ['최대주주', '기재정정', '공급계약'] # 공시정보 검색 사용자 정의 함수 def 공시정보검색(시작일자, 종료일자): reports = dart.filings.search(bgn_de=시작일자, end_de=종료일자, sort='date', page_count=10)
def load_dart(self): dart.set_api_key(self.api_key) self.crp_list = dart.get_corp_list()