daily_crawler.py 2.35 KB
import math
import pymysql
import datetime
from sqlalchemy import create_engine
import pandas as pd
from PyQt5.QtCore import *

import library.cf

pymysql.install_as_MySQLdb()

# -* daily_crawler *-
# 종목별 일자별 데이터를 저장하는 데이터베이스

class daily_crawler():
    def __init__(self, db_name, daily_craw_db_name, daily_buy_list_db_name):
        self.cf=library.cf
        # db_name==0인 경우는 simulator
        if db_name != 0:
            self.db_name = db_name
            self.daily_craw_db_name = daily_craw_db_name

            self.daily_buy_list_db_name = daily_buy_list_db_name

            self.engine = create_engine(
                "mysql+pymysql://" + self.cf.db_id + ":" + self.cf.db_pw + "@" + self.cf.db_ip + ":" + self.cf.db_port + "/daily_craw",
                encoding='utf-8')
            self.daily_craw_db_con = self.engine.connect()

            self.variable_setting()
        else:
            pass

    # 업데이트가 금일 제대로 끝났는지 확인하는 함수
    def variable_setting(self):

        self.market_start_time = QTime(9, 0, 0)         # 장 시작시간
        self.market_end_time = QTime(15, 31, 0)         # 장 마감시간

        self.today = datetime.datetime.today().strftime("%Y%m%d")
        self.today_detail = datetime.datetime.today().strftime("%Y%m%d%H%M")

    # 현재 시간에 장이 열려있는지 확인하는 함수
    def market_time_check(self):
        self.current_time = QTime.currentTime()
        if self.current_time > self.market_start_time and self.current_time < self.market_end_time:
            return True
        else:
            return False

    def get_item_kospi(self):
        self.code_df_kospi = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=stockMkt',header=0)[0]  # 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌

        # 6자리 만들고 앞에 0을 붙인다.
        self.code_df_kospi.종목코드 = self.code_df_kospi.종목코드.map('{:06d}'.format)

        # 회사명과 종목코드를 제외한 칼럼은 삭제
        self.code_df_kospi = self.code_df_kospi[['회사명', '종목코드']]

        # 한글로된 컬럼명을 영어로 변경
        self.code_df_kospi = self.code_df_kospi.rename(columns={'회사명': 'code_name', '종목코드': 'code'})