今日書いたのはこれ。
Google Financeから証券コードを指定して日別の価格情報を取得するプログラムです。
米国市場に上場している銘柄であればCSVでダウンロードでますが、日本の銘柄はできなかったので作りました。
多くの人はYahoo!Japanから取得しているようなので、あえてGoogle Financeから取得してみました。
ちなみに使えるのは東証に上場している銘柄のみです。(おそらく)
このプログラムと日経225構成銘柄一覧取得プログラムを組み合わせれば、日経225構成銘柄の時系列データが取得できてしまいます。
Google Financeから証券コードを指定して日別の価格情報を取得するプログラムです。
米国市場に上場している銘柄であればCSVでダウンロードでますが、日本の銘柄はできなかったので作りました。
多くの人はYahoo!Japanから取得しているようなので、あえてGoogle Financeから取得してみました。
ちなみに使えるのは東証に上場している銘柄のみです。(おそらく)
このプログラムと日経225構成銘柄一覧取得プログラムを組み合わせれば、日経225構成銘柄の時系列データが取得できてしまいます。
#!/usr/local/bin/python # -*- coding:utf-8 -*- from BeautifulSoup import BeautifulSoup import urllib2,re,datetime,sys class googleFinance2CSV(object): def __init__(self,ticker): ''' 引数で渡されたticker(=証券コード)の時系列データを Google Financeから取得してCSV形式で保持する CSVの列は'Date','Open','High','Low','Close','Volume' ''' self.ticker = ticker self.url = 'http://www.google.com/finance/historical?q=%s&num=200' % str(self.ticker) self.csv = str() soup = BeautifulSoup(urllib2.urlopen(self.url)) tablesoup = soup.find("table", {"class":"gf-table historical_price"}) for trsoup in tablesoup.findAll("tr"): if len(self.csv)==0: tdsoups = trsoup.findAll("th") else: tdsoups = trsoup.findAll("td") self.csv +=re.sub(r'\n','',','.join([re.sub(r',','',tdsoup.find(text=True)) if tdsoup.find(text=True) else '' for tdsoup in tdsoups])) +'\n' #日付が'Sep 7 2011'形式になっているので'20110907'形式に直す rows = [row.split(',') for row in self.csv.split('\n')] for row in rows: if row[0] == 'Date': self.csv = ','.join(row)+'\n' elif row[0] <> '': self.csv += datetime.datetime.strftime(datetime.datetime.strptime(row[0],'%b %d %Y'),'%Y%m%d')+','+','.join(row[1:])+'\n' def savefile(self,filepath): ''' 引数で渡されたfilepath(=保存先ファイル名のフルパス)に CSV形式で保存する ''' f = open(filepath,'w') f.write(self.csv) f.close() if __name__=='__main__': ''' コマンドラインで以下のように実行する "python googlefinance2csv.py TYO:xxxx"のxxxxに証券コードを入れる Cドライブの直下に'TYOxxxx.csv'というファイルができる ''' gf2csv = googleFinance2CSV(sys.argv[1]) gf2csv.savefile('C:\\'+re.sub(r':','',sys.argv[1])+'.csv')
コメント
コメントを投稿