编写一个将Yahoo Finance股票报价引入Excel的python程序

时间:2015-08-11 02:37:31

标签: python python-2.7 csv finance yahoo-finance

我创建了一个程序,可以从Yahoo Finance中提取月度股票信息并打印出信息列表。我知道我获取信息的方法不是最好的,但我坚持的部分是获取股票信息并将其写入csv文件。到目前为止,我将每个角色都限制为csv文件。

-H "Content-Type: application/json"

1 个答案:

答案 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)