Example #1
0
def get_stake_info(code):
    url = "http://companyinfo.stock.naver.com/v1/company/c1010001.aspx?cmp_cd=%s&target=finsum_more" % (
        code)
    html = requests.get(url).text

    df_list = pd.read_html(html)  #, index_col='주요재무정보')

    distriPerc = df_list[1].ix[6][1].split('/')[1]

    shares = df_list[1].ix[6][1].split('/')[0]
    print(["발행주식수", int(shares.replace('주 ', '').replace(',', ''))])
    print([
        '유통주식수',
        int(
            int(shares.replace('주 ', '').replace(',', '')) *
            float(distriPerc.replace('%', '')) * 0.01)
    ])
    for i in range(0, len(df_list[4])):
        if (str(df_list[4].ix[i][0]) != 'nan'):
            print([
                df_list[4].ix[i][0].split('외')[0].strip(),
                int(round(df_list[4].ix[i][1]))
            ])

    obj = []
    obj.append(["발행주식수", int(shares.replace('주 ', '').replace(',', ''))])
    obj.append([
        '유통주식수',
        int(
            int(shares.replace('주 ', '').replace(',', '')) *
            float(distriPerc.replace('%', '')) * 0.01)
    ])
    for i in range(0, len(df_list[4])):
        if (str(df_list[4].ix[i][0]) != 'nan'):
            obj.append([
                df_list[4].ix[i][0].split('외')[0].strip(), df_list[4].ix[i][1]
            ])

    for eachObj in obj:

        #데이터 db insert
        query = 'INSERT INTO jazzdb.T_STOCK_SHARES_INFO VALUES("%s","%s","%s","%s")' % (
            code, eachObj[0], eachObj[1], dp.todayStr('n'))
        db.insert(query)
Example #2
0
                        AND A.LISTED = 1
                                                        """ % (dt)

    for eachRow in db.select(query):
        if (len(eachRow) > 0):
            itemDic[eachRow[1].upper()] = eachRow[0]
            codeDic[eachRow[0]] = eachRow[1].upper()

    print("[INFO] 종목명/종목코드를 메모리에 읽어왔습니다, 남은 종목 수: ", len(itemDic.keys()))


itemDic, codeDic = {}, {}

apiObj = kapi.Kiwoom()
apiObj.comm_connect()
dateA, dateB = am.api_checkDate(apiObj, dp.todayStr('n'))

if (len(sys.argv) > 1):
    dateA = sys.argv[1]
    print("PASSED ARGV : ", dateA)  # 과거 수집용
else:
    print("PASSED ARGV : None")  # 일 배치

db_readAll(dateA)
start = time.time()

for itr, eachCode in enumerate(
        list(codeDic.keys())[:min([len(codeDic), 995])]):

    try:
        inserted_data_size = am.api_getDayChart(apiObj, eachCode, dateA)
Example #3
0
    'select stockcode, stockname from jazzdb.T_STOCK_CODE_MGMT')
codeDic = {}  # code : name

# jazzdb.t_stock_code_mgmt 테이블
# 신규상장종목 및 종목명 변경여부 확인,업데이트하는 소스
# 데이터 출처 : Kiwoom

for each in old_list:
    codeDic[each[0]] = each[1]

new_list = apiObj.get_list('p')
new_list = new_list + apiObj.get_list('d')

for eachcode in new_list:
    # 신규 상장 종목 인서트
    if eachcode[0] != '' and eachcode[0] not in codeDic.keys():
        print(eachcode + [dm.todayStr('-')])
        db.insert(
            "INSERT INTO `jazzdb`.`T_STOCK_CODE_MGMT` (`STOCKCODE`, `STOCKNAME`, `MARKET`, `LISTED`, `UPDATEDATE`) VALUES ('%s', '%s', '%s', '%s','%s');"
            % tuple(eachcode + [dm.todayStr('-')]))
        print("신규상장 종목", eachcode)

    # 종목명 바뀐경우 업데이트
    if eachcode[0] != '' and eachcode[0] in codeDic.keys(
    ) and eachcode[1] != codeDic[eachcode[0]]:
        print("종목명 변경", codeDic[eachcode[0]], eachcode)
        db.insert(
            "UPDATE `jazzdb`.`T_STOCK_CODE_MGMT` SET `STOCKNAME` = '%s', `UPDATEDATE` = '%s' WHERE (`STOCKCODE` = '%s')"
            % (eachcode[1], dm.todayStr('-'), eachcode[0]))

apiObj.destroy()
Example #4
0
#

query = """

                    SELECT A.STOCKCODE, A.STOCKNAME
                    FROM jazzdb.T_STOCK_CODE_MGMT A
                    WHERE 1=1
                    AND A.STOCKCODE NOT IN (

                        SELECT STOCKCODE
                        FROM jazzdb.T_STOCK_SHARES_INFO
                        WHERE DATE = '%s'
                        GROUP BY STOCKCODE
                    )
                    AND A.LISTED = 1
                                                    """ % (dp.todayStr('n'))

existsList = []

print("[DEBUG] CRAWLING 시작")

for eachRow in db.select(query):
    print(eachRow)

    if (len(eachRow) > 0):
        print(eachRow[0], '/', eachRow[1])

        try:
            get_stake_info(eachRow[0])
        except:
            print("error 발생!")