2017-09-05 3 views
0
import pandas_datareader.data as web 
import pandas, xlrd 
from datetime import datetime, timedelta 
import csv 

end = datetime.now() # 마지막 날을 오늘로 설정 
start = end - timedelta(days=250) # 시작 날을 오늘로 부터 250일 전으로 설정 

stock_code = pandas.read_excel('/home/ubuntu/trading/Book1.xlsx', dtype=str, encoding="CP949").as_matrix() 

#250일 모멘텀 계산 
for st in stock_code: 
    eventcode = st[0] 
    try: 
     df = web.DataReader("krx:%s" % eventcode, "google", start, end) #코스피이면 구글에서 데이터 받음 
    except: 
     df = web.DataReader("%s.KQ" % eventcode, "yahoo", start, end) #코스닥이면 야후에서 데이터 받음 
     try: 
      df=web.DataReader("%s.KQ" % eventcode, "yahoo", start, end) #코스닥이면 야후에서 데이터 받음 
     except: 
      df = web.DataReader("%s.KQ" % eventcode, "yahoo", start, end) # 코스닥이면 야후에서 데이터 받음 
    close = df['Close'] 
    num = len(close) 

    sum = 0 
    for x in range(0, num - 1): 
     if close[x + 1]/close[x] == 1: #당일 종가가 전날 종가와 같으면 0 추가 
      sum = sum + 0 
     elif close[x + 1]/close[x] > 1: #당일 종가가 전날 종가 보다 높으면 1 추가 
      sum = sum + 1 
     else: #당일 종가가 전날 종가가 낮으면 -1. 
      sum = sum - 1 
    print(sum) #최종값 

안녕하세요. 구글과 야후에서 주식 데이터를 얻고 싶습니다. 가끔 야후에서 데이터를 가져올 수 없습니다. 몇 초 후에 다시 시도해 보니 데이터를 얻을 수 있습니다.파이썬에서 예외 처리를 반복하는 방법

그래서 시도해보십시오. 내가 야후에서 데이터를 가져올 수 없다면. 나는 다시 3 번 시도하고 싶다. 그래서 try를 넣고 except를 제외하고. 하지만 작동하지 않습니다.

어떻게 고칠 수 있습니까?

이 오류

pandas_datareader._utils.RemoteDataError: Unable to read URL: https://query1.finance.yahoo.com/v7/finance/download/003100.KQ?period1=1483019682&period2=1504655999&crumb=Vxp9S4A%5Cu002FjwQ&interval=1d&events=history 
+0

'time.sleep()'을 사용하여 재 시도간에 지연을 도입하십시오. – gipsy

답변

0

당신은 잠 논리로 갈 수 있으며,뿐만 아니라 재 시도의 수를 제한 할 수 있습니다

DF = 없음

DF 인 반면 없음 :

try: 

    df = web.DataReader("krx:%s" % eventcode, "google", start, end) 

except: 

sleep(1000) 
df = None 
관련 문제