2016-05-21 6 views
0

誰もがyahoo finance csvを直接Pythonに手に入れる方法を知っていますか?ヤフーファイナンスcsvを直接Pythonに手に入れる方法

http://real-chart.finance.yahoo.com/table.csv?s=WU&a=4&b=20&c=2015&d=05&e=21&f=2016&g=d&ignore=.csv' 

それは私がCSVファイルをダウンロードするかどうかを尋ねるポップアップを与える:

問題は、私はこの(例)リンクでデータを取得しようとするということです。これは、私がPythonにそれを読み込もうとするとバグに繋がります。私のスクリプトは次のとおりです。

today = datetime.date.today() 

def get_url(stock='GOOG', START_date = str(int(str(today).split('-')[0])-1)+ 
      '-' +str(int(str(today).split('-')[1])-1) + ('-') + 
      str(int(str(today).split('-')[2])-1), END_date= str(today)): 
    baseurl = 'http://real-chart.finance.yahoo.com/table.csv?' 
    stock = 's=WU' 

    FROM_date = ('&a=' + START_date.split('-')[1] + '&b=' + 
    START_date.split('-')[2] + '&c=' + 
    START_date.split('-')[0]) 

    TO_date = ('&d=' + END_date.split('-')[1] + '&e=' + 
    END_date.split('-')[2] + '&f=' + END_date.split('-')[0]) 

    url = baseurl + stock + FROM_date + TO_date + '&g=d&ignore=.csv' 
    return url 

rawdate = [] 
with open(get_url()) as csvfile: 
    reader = csv.reader(csvfile, delimiter = ",") 
    for row in reader: 
     rawdata.append(row) 

私は最初のCSVをダウンロードした場合、私は、Pythonにそれを読むことができますが、私が最初にそれをダウンロードすることなく、直接、csvファイルにアクセスするために取得したいです。これは可能ですか?代わりにcsvをtempとして持つこともできます。

ありがとうございます!

答えて

2

パンダを使用することをおすすめします。ここにはlinkがあります。

import pandas.io.data as web 
import datetime 
start = datetime.datetime(2010, 1, 1) 
end = datetime.datetime(2013, 1, 27) 
f = web.DataReader("F", 'yahoo', start, end) 
f.ix['2010-01-04'] 

OUT [6]: オープン1.017000e + 01

高1.028000e + 01

低1.005000e + 01

閉じる1.028000e + 01

ボリューム6.085580e + 07

Adj閉じる8.755953e + 00 名前:2010-01-04 00:00:00、dtype:float64

+0

しかし、好奇心の外には、「開く/保存/閉じる」ウィンドウを迂回する方法があります。 – Ptru

0

この方法で試してみてください。

in this file "C:/Users/your_path/Desktop/symbols/tickers.txt" 
you have the following tickers 
ibm 
sbux 
msft 
""" 

import urllib 
import re 
import json 

symbolslist = open("C:/Users/rshuell001/Desktop/symbols/tickers.txt").read() 
symbolslist = symbolslist.split("\n") 

for symbol in symbolslist: 
    myfile = open("C:/Users/rshuell001/Desktop/symbols/" +symbol +".txt", "w+") 
    myfile.close() 

    htmltext = urllib.urlopen("http://www.bloomberg.com/markets/chart/data/1D/"+ symbol+ ":US") 
    data = json.load(htmltext) 
    datapoints = data["data_values"] 

    myfile = open("C:/Users/rshuell001/Desktop/symbols/" +symbol +".txt", "a") 
    for point in datapoints: 
     myfile.write(str(symbol+","+str(point[0])+","+str(point[1])+"\n")) 
    myfile.close() 

これはあなたに必要なものを与えるはずです。

関連する問題