diff --git a/hts/HTS.py b/hts/HTS.py index 3d87287..13457cd 100644 --- a/hts/HTS.py +++ b/hts/HTS.py @@ -1,4 +1,4 @@ -import win32com.client +#import win32com.client import time from hts.OrderItem import OrderItem diff --git a/hts/HTS_122630.py b/hts/HTS_122630.py index 52dcee2..56600e7 100644 --- a/hts/HTS_122630.py +++ b/hts/HTS_122630.py @@ -1,4 +1,3 @@ -import win32com.client import time import os from datetime import datetime diff --git a/hts/HTS_252670.py b/hts/HTS_252670.py index 024a996..35b778a 100644 --- a/hts/HTS_252670.py +++ b/hts/HTS_252670.py @@ -1,4 +1,3 @@ -import win32com.client import time import os from datetime import datetime diff --git a/hts/util/DataDownloader.py b/hts/util/DataDownloader.py index bfc0a20..118f326 100644 --- a/hts/util/DataDownloader.py +++ b/hts/util/DataDownloader.py @@ -1,14 +1,10 @@ -import win32com.client import time import os -from datetime import datetime +from datetime import datetime, timedelta import pandas as pd from hts.HTS import HTS -from hts.BuySellChecker import BuySellChecker - - class DataDownloader (HTS): buySellChecker = None @@ -20,7 +16,7 @@ class DataDownloader (HTS): return # 주식 현재가 조회 - def writeStockData(self, stock_code, given_day): + def writeStockData(self, stock_code, given_day, type, outDir): objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos") bConnect = objCpCybos.IsConnect if (bConnect == 0): @@ -30,14 +26,14 @@ class DataDownloader (HTS): # 차트 객체 구하기 objStockChart = win32com.client.Dispatch("CpSysDib.StockChart") - outfp = open("./data/"+stock_code+"_"+given_day+".csv", mode="w", encoding="utf-8") + outfp = open(outDir+"/"+stock_code+"_"+given_day+"_"+type+".csv", mode="w", encoding="utf-8") objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드 objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회 objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일 objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일 objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수 objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량 - objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청 + objStockChart.SetInputValue(6, ord(type)) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청 objStockChart.SetInputValue(7, 1) objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용 objStockChart.BlockRequest() @@ -287,13 +283,16 @@ if __name__ == "__main__": today = datetime.today() PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__)))) - RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d") + RESOURCE_DIR = PROJECT_HOME + "/resources/data" - # KODEX 인버스 * 2 stock_code = "252670" dataDownloader = DataDownloader() - given_day = datetime.today().strftime('%Y%m%d') - dataDownloader.writeStockData(stock_code, "20220520") + for i in range(1, 1000): + given_day = datetime.today() - timedelta(i) + + # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청 + dataDownloader.writeStockData(stock_code, given_day.strftime('%Y%m%d'), 'm', RESOURCE_DIR) + dataDownloader.writeStockData(stock_code, given_day.strftime('%Y%m%d'), 'S', RESOURCE_DIR) print ("done...") diff --git a/stockpredictor/crawler/sQLite/MetaCrawler.py b/stockpredictor/crawler/sQLite/MetaCrawler.py index a910997..a0622c1 100644 --- a/stockpredictor/crawler/sQLite/MetaCrawler.py +++ b/stockpredictor/crawler/sQLite/MetaCrawler.py @@ -52,7 +52,7 @@ class MetaCrawler: html = None while True: try: - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) break except: @@ -136,7 +136,7 @@ class MetaCrawler: html = None while True: try: - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text) sleep(0.5) break except: @@ -214,7 +214,7 @@ class MetaCrawler: html = None while True: try: - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text, encoding='euc-kr') + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text, encoding='euc-kr') sleep(0.5) break except: @@ -301,7 +301,7 @@ class MetaCrawler: html = None while True: try: - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) break except: @@ -383,7 +383,7 @@ class MetaCrawler: html = None while True: try: - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) break except: diff --git a/stockpredictor/crawler/sQLite/StockCrawler.py b/stockpredictor/crawler/sQLite/StockCrawler.py index 00e48cd..4d11512 100644 --- a/stockpredictor/crawler/sQLite/StockCrawler.py +++ b/stockpredictor/crawler/sQLite/StockCrawler.py @@ -45,7 +45,7 @@ class StockCrawler: def getStockInfo(self): #code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', header=0)[0] - code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=5).text)[0] + code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=30).text)[0] # code_df = pd.read_excel('../resources/stock/상장법인목록.xls') # 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌 @@ -382,7 +382,7 @@ class StockCrawler: html = None while True: try: - html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=30).text) sleep(0.5) break except: diff --git a/stockpredictor/crawler/toJsonFile/FnGuideCrawler.py b/stockpredictor/crawler/toJsonFile/FnGuideCrawler.py index 1e3be51..d7bb865 100644 --- a/stockpredictor/crawler/toJsonFile/FnGuideCrawler.py +++ b/stockpredictor/crawler/toJsonFile/FnGuideCrawler.py @@ -10,7 +10,7 @@ class FnGuideCrawler: def getStockInfo(self): #code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', header=0)[0] - code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=5).text)[0] + code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=30).text)[0] # code_df = pd.read_excel('../resources/stock/상장법인목록.xls') # 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌 diff --git a/stockpredictor/crawler/toJsonFile/MetaCrawler.py b/stockpredictor/crawler/toJsonFile/MetaCrawler.py index dad4a03..a7e4846 100644 --- a/stockpredictor/crawler/toJsonFile/MetaCrawler.py +++ b/stockpredictor/crawler/toJsonFile/MetaCrawler.py @@ -46,7 +46,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(input['URL'] + '&page=%s' % i, header=0) - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 @@ -120,7 +120,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(url + str(i), header=0) - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 @@ -181,7 +181,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(url + str(i), header=0, encoding='euc-kr') - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text, encoding='euc-kr') + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text, encoding='euc-kr') sleep(0.5) # 마지막 페이지 까지 받기 @@ -253,7 +253,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(input['URL'] + '&page=%s' % i, header=0) - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 diff --git a/stockpredictor/crawler/toJsonFile/StockCrawler.py b/stockpredictor/crawler/toJsonFile/StockCrawler.py index b1d29eb..ebf59f2 100644 --- a/stockpredictor/crawler/toJsonFile/StockCrawler.py +++ b/stockpredictor/crawler/toJsonFile/StockCrawler.py @@ -74,7 +74,7 @@ class StockCrawler: def getStockInfo(self): #code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', header=0)[0] - code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=5).text)[0] + code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=30).text)[0] # code_df = pd.read_excel('../resources/stock/상장법인목록.xls') # 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌 @@ -255,7 +255,7 @@ class StockCrawler: # 최근 상장 기업의 마지막 반복되는 페이지를 제외시킨다. pg_url = '{url}&page={page}'.format(url=url, page=page) #html = pd.read_html(pg_url, header=0) - html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=30).text) sleep(0.5) count = 0 @@ -379,7 +379,7 @@ class StockCrawler: # 최근 상장 기업의 마지막 반복되는 페이지를 제외시킨다. pg_url = '{url}&page={page}'.format(url=url, page=page) #html = pd.read_html(pg_url, header=0) - html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=30).text) sleep(0.5) count = 0 @@ -603,7 +603,7 @@ class StockCrawler: # 최근 상장 기업의 마지막 반복되는 페이지를 제외시킨다. pg_url = '{url}&page={page}'.format(url=url, page=page) #html = pd.read_html(pg_url, header=0) - html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=30).text) sleep(0.5) count = 0 diff --git a/stockpredictor/crawler/toSQLite/MetaCrawler.py b/stockpredictor/crawler/toSQLite/MetaCrawler.py index dc10827..7494935 100644 --- a/stockpredictor/crawler/toSQLite/MetaCrawler.py +++ b/stockpredictor/crawler/toSQLite/MetaCrawler.py @@ -46,7 +46,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(input['URL'] + '&page=%s' % i, header=0) - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 @@ -126,7 +126,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(url + str(i), header=0) - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 @@ -192,7 +192,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(url + str(i), header=0, encoding='euc-kr') - html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=5).text, encoding='euc-kr') + html = pd.read_html(requests.get(url + str(i), headers=self.header, timeout=30).text, encoding='euc-kr') sleep(0.5) # 마지막 페이지 까지 받기 @@ -267,7 +267,7 @@ class MetaCrawler: finish = False for i in range(1, self.limit_page_count): #html = pd.read_html(input['URL'] + '&page=%s' % i, header=0) - html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(input['URL'] + '&page=%s' % i, headers=self.header, timeout=30).text) sleep(0.5) # 마지막 페이지 까지 받기 diff --git a/stockpredictor/crawler/toSQLite/StockCrawler.py b/stockpredictor/crawler/toSQLite/StockCrawler.py index f3329da..229c9b8 100644 --- a/stockpredictor/crawler/toSQLite/StockCrawler.py +++ b/stockpredictor/crawler/toSQLite/StockCrawler.py @@ -75,7 +75,7 @@ class StockCrawler: def getStockInfo(self): #code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', header=0)[0] - code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=5).text)[0] + code_df = pd.read_html(requests.get('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', headers=self.header, timeout=30).text)[0] # code_df = pd.read_excel('../resources/stock/상장법인목록.xls') # 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌 @@ -228,7 +228,7 @@ class StockCrawler: # 최근 상장 기업의 마지막 반복되는 페이지를 제외시킨다. pg_url = '{url}&page={page}'.format(url=url, page=page) #html = pd.read_html(pg_url, header=0) - html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text) + html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=30).text) sleep(0.5) for date in html[0].날짜.values: