Beispiel #1
0
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 {
                '매출액': 매출액,
                '영업이익': 영업이익,
                '당기순이익': 당기순이익,
                '자산': 자산,
                '부채': 부채,
                '자본총계': 자본총계,
                '코멘트': 코멘트
            }
Beispiel #2
0
    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
Beispiel #3
0
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
Beispiel #4
0
 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")
Beispiel #6
0
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)
Beispiel #7
0
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,
Beispiel #8
0
    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)
Beispiel #9
0
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
Beispiel #10
0
    

    
    ''')

    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())
Beispiel #11
0
    def __init__(self):
        """

        """
        dart.set_api_key(consts.DART_KEY)
Beispiel #12
0
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)
Beispiel #13
0
 def load_dart(self):
     dart.set_api_key(self.api_key)
     self.crp_list = dart.get_corp_list()