2014-06-15 8 views
1

다음 프로그램을 사용하여 yahoo finance에서 로컬 드라이브의 텍스트 파일로 데이터를 가져옵니다. 이 프로그램은 성공적으로 내 컴퓨터에서 txt 파일에 야후 금융에서 데이터를 가져옵니다.PYTHON을 사용하여 Yahoo Finance 데이터를 가져 오기

코드가 19 "오류"다음에 성공적으로 끌어 오기가 나타나는 이유는 무엇입니까?

데이터베이스 서버에 데이터를 저장하려면 어떻게해야합니까?

import urllib.request 
import time 

stockstoPull = 'AMD', 'BAC', 'MSFT', 'TXN', 'GOOG' 

def pullData(stock): 
    fileLine = stock + '.txt' 
    urltovisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv' 
with urllib.request.urlopen(urltovisit) as f: 
    sourceCode = f.read(100000).decode('utf-8') 
splitSource = sourceCode.split('\n') 

for eachLine in splitSource: 
    splitLine = eachLine.split('.') 
    if len(splitLine) == 5: 
     if 'values' not in eachLine: 
      saveFile = open(fileLine,'a') 
      linetoWrite = eachLine+'\n' 
      saveFile.write(linetoWrite) 
    else: 
     print('Error') 

print('Pulled', stock) 
print('...') 
time.sleep(.5) 

for eachStock in stockstoPull:  
    pullData(eachStock) 
+0

전체 스택 추적을 게시 할 수 있습니까? 야후 파이낸싱 API 주위에는 많은 래퍼가 내장되어 있습니다. 제가 자주 사용하는 글은 여기에 있습니다 : http://goldb.org/ystockquote.html – RohitJ

답변

2

코드가 정확합니다. 2 가지만 변경했습니다. 오류는 splitLine 길이가 6보다 작은 경우입니다. sqlite를 데이터베이스로 사용할 수 있습니다.

import urllib.request 
import time 

stockstoPull = 'AMD', 'BAC', 'MSFT', 'TXN', 'GOOG' 

def pullData(stock): 
    fileLine = stock + '.txt' 
    urltovisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv' 
    with urllib.request.urlopen(urltovisit) as f: 
     sourceCode = f.read().decode('utf-8') 
    splitSource = sourceCode.split('\n') 

    for eachLine in splitSource: 
     splitLine = eachLine.split(',') # <---(here ',' instead of '.') 
     if len(splitLine) == 6: # <----(here, 6 instead of 5) 
      if 'values' not in eachLine: 
       saveFile = open(fileLine,'a') 
       linetoWrite = eachLine+'\n' 
       saveFile.write(linetoWrite) 

    print('Pulled', stock) 
    print('...') 
    time.sleep(.5) 

if __name__=="__main__": 
    for eachStock in stockstoPull:  
     pullData(eachStock) 
+0

당신이 바꾼 두 가지 사실을 적어두면 유용 할 것입니다 ... – Hooked

+0

@ user3740414 고맙습니다. 표시하는 코드가 작동합니다. –

-2

팬더가있는 "Yahoo Finance Data"를 받기 위해 tutorial을 찾을 수 있습니다.

Python 데이터 분석 라이브러리 인 Pandas는 야후 재무 데이터를 데이터 프레임으로 즉시 가져 오기위한 자체 원격 데이터 액세스 옵션이 있습니다.

P. : 페이지 상단의 경고를 숙지하십시오. 추가로 "pandas_datareader"라는 라이브러리를 설치해야합니다. 쿼리의 결과는 팬더 데이터 프레임이됩니다.

관련 문제