使用PYTHON获取Yahoo Finance数据
我正在使用一个程序,从雅虎财经提取数据,并把这些数据保存到我电脑上的一个文本文件里。这个程序确实能成功地把数据从雅虎财经拉取到我的电脑里的txt文件中。
但是,为什么代码会出现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)
2 个回答
-2
你可以找到一个关于如何使用pandas获取“雅虎财经数据”的教程。
Pandas是一个用于数据分析的Python库,它有自己的方法可以直接获取雅虎财经的数据,并把这些数据放到一个叫做数据框(dataframe)的结构里。
补充说明:请注意页面顶部的警告。你需要额外安装一个库,叫做“pandas_datareader”。查询的结果会以pandas的数据框形式返回。
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)