timeout 5초 추가
This commit is contained in:
@@ -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).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=5).text)[0]
|
||||
# code_df = pd.read_excel('../resources/stock/상장법인목록.xls')
|
||||
|
||||
# 종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줌
|
||||
@@ -207,7 +207,7 @@ class StockCrawler:
|
||||
|
||||
return
|
||||
|
||||
def crawl_us_stocks(self, inFileName):
|
||||
def crawl_special_stocks(self, inFileName):
|
||||
tableName = 'stock'
|
||||
conn = sqlite3.connect(inFileName)
|
||||
cursor = conn.cursor()
|
||||
@@ -228,7 +228,10 @@ class StockCrawler:
|
||||
pd.options.display.float_format = '{:.4f}'.format
|
||||
pd.set_option('display.max_columns', None)
|
||||
|
||||
us_stocks = {
|
||||
special_stocks = {
|
||||
'^KS11': 'Kospi',
|
||||
'^KQ11': 'Kosdak',
|
||||
|
||||
'SQQQ': 'ProShares UltraPro Short QQQ',
|
||||
'TQQQ': 'ProShares UltraPro QQQ',
|
||||
'SCO': 'ProShares UltraShort Bloomberg Crude Oil',
|
||||
@@ -286,21 +289,28 @@ class StockCrawler:
|
||||
cursor = conn.cursor()
|
||||
|
||||
us_sotck_data = {}
|
||||
for ticker in us_stocks:
|
||||
for ticker in special_stocks:
|
||||
|
||||
cursor.execute('SELECT * FROM ' + tableName + ' WHERE CODE=?', (ticker,))
|
||||
|
||||
result = cursor.fetchone()
|
||||
if result == None:
|
||||
#start = pd.to_datetime('2017-01-01')
|
||||
start = pd.to_datetime(self.START_DATE.replace(".", "-"))
|
||||
end = pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
|
||||
#start_day = pd.to_datetime('2017-01-01')
|
||||
start_day = pd.to_datetime(self.START_DATE.replace(".", "-"))
|
||||
end_day = pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
|
||||
else:
|
||||
#start = (datetime.today() - timedelta(days=300)).strftime('%Y-%m-%d')
|
||||
start = pd.to_datetime(self.START_DATE.replace(".", "-"))
|
||||
end = pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
|
||||
start_day = pd.to_datetime(self.START_DATE.replace(".", "-"))
|
||||
end_day = pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
|
||||
|
||||
data = pdr.get_data_yahoo(ticker, start, end)
|
||||
data = None
|
||||
while True:
|
||||
try:
|
||||
data = pdr.get_data_yahoo(ticker, start_day, end_day)
|
||||
break
|
||||
except:
|
||||
print(ticker)
|
||||
continue
|
||||
us_sotck_data[ticker] = {
|
||||
'close': data['Close'].to_dict(),
|
||||
'open': data['Open'].to_dict(),
|
||||
@@ -369,7 +379,15 @@ 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).text)
|
||||
html = None
|
||||
while True:
|
||||
try:
|
||||
html = pd.read_html(requests.get(pg_url, headers=self.header, timeout=5).text)
|
||||
break
|
||||
except:
|
||||
print(pg_url)
|
||||
continue
|
||||
|
||||
for date in html[0].날짜.values:
|
||||
if type(date) is str:
|
||||
if date in date_set:
|
||||
|
||||
Reference in New Issue
Block a user