我创建了一个程序,可以从Yahoo Finance中提取月度股票信息并打印出信息列表。我知道我获取信息的方法不是最好的,但我坚持的部分是获取股票信息并将其写入csv文件。到目前为止,我将每个角色都限制为csv文件。
-H "Content-Type: application/json"
答案 0 :(得分:2)
read()
返回一个字符串,因此Info
是一个字符串。对字符串进行迭代会导致迭代组成字符串的每个字符:
>>> for c in 'abcd':
... print c
a
b
c
d
因此,您的代码会将每个字符写入csv文件中。
您收到的数据实际上已经是CSV格式。这是股票YHOO的前几行:
Date,Open,High,Low,Close,Volume,Adj Close 2014-12-01,51.43,51.68,48.290001,50.509998,16328900,50.509998 2014-11-03,46.049999,52.619999,45.740002,51.740002,25212400,51.740002
所以它应该只是保存文件的问题:
with open('{}.csv'.format(Ticker),'wb') as output:
output.write(Website.read())
这会将数据写入以股票名称命名的文件,后跟.csv
扩展名,例如YHOO.csv
<强>更新强>
以下代码显示如何下载和合并多个股票的数据。输出文件现在需要一个额外的字段来标识库存 - Stock ID
。它将作为标题和详细信息行的第一个CSV字段插入。标题只发出一次。
import requests
yahoo_url = 'http://ichart.yahoo.com/table.csv'
params = {'a': 0, 'b': 1, 'c': 2010, 'd': 11, 'e': 31, 'f': 2014, 'g': 'm', 'ignore': '.csv'}
stock_ids = ['AAPL', 'GOOG', 'YHOO']
with open('output.csv', 'wb') as output:
header_written = False
for stock_id in stock_ids:
params['s'] = stock_id
r = requests.get(yahoo_url, params=params)
lines = r.iter_lines()
header = next(lines)
if not header_written:
output.write('Stock ID,{}\n'.format(header))
header_written = True
output.writelines('{},{}\n'.format(stock_id, line) for line in lines)