xldrとやらを使ってexcelのファイルを読み込んだときのメモ。
まずは以下からダウンロードしてインストール。
https://pypi.python.org/pypi/xlrd
ファイルを展開してpython setup.py installを実行した。
そんで、まずは東証の次のページからexcelの銘柄一覧をurllib使って取得。
http://www.tse.or.jp/market/data/listed_companies/index.html
そのあと読み込んんだデータからxldrを使ってコード、銘柄名、業種コードを取得して
それらをcsv形式にしてまとめた一覧を標準出力に書き出した。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import xlrd
import urllib
def readlist(t, url):
fd = urllib.urlopen(url)
content = fd.read()
fd.close()
book = xlrd.open_workbook(file_contents=content)
sheet = book.sheet_by_index(0)
for n in range(1, sheet.nrows):
row = sheet.row(n)
day = int(row[0].value)
code = int(row[1].value)
name = row[2].value.encode('utf_8')
sector = int(row[3].value) if len(row) > 3 else ""
print ",".join([str(code), name, str(sector), t])
if __name__ == '__main__':
urls = {
"市場第一部(内国株)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje6000003l9u4.xls",
"市場第一部(外国株)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023aym.xls",
"市場第二部": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023aza.xls",
"マザーズ(内国株)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023azg.xls",
"マザーズ(外国株)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023azm.xls",
"REIT・ベンチャーファンド・カントリーファンド": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023b04.xls",
"ETF・ETN": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023azy.xls",
"PRO Market": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje60000023azq.xls",
"JASDAQ(グロース)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje6000002t00f.xls",
"JASDAQ(スタンダード)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje6000003uzjd.xls",
"JASDAQ(スタンダード・外国株)": "http://www.tse.or.jp/market/data/listed_companies/b7gje60000023aiz-att/b7gje6000003v04x.xls"}
for t, url in urls.items():
readlist(t, url)
出力結果
1301,極洋,50,市場第一部(内国株) 1332,日本水産,50,市場第一部(内国株) 1333,マルハニチロ,50,市場第一部(内国株) 1352,ホウスイ,6050,市場第一部(内国株) 1377,サカタのタネ,50,市場第一部(内国株) 1379,ホクト,50,市場第一部(内国株) 1414,ショーボンドホールディングス,2050,市場第一部(内国株) 1417,ミライト・ホールディングス,2050,市場第一部(内国株) 1419,タマホーム,2050,市場第一部(内国株) 1420,サンヨーホームズ,2050,市場第一部(内国株) 1514,住石ホールディングス,1050,市場第一部(内国株) 1515,日鉄鉱業,1050,市場第一部(内国株) 1518,三井松島産業,1050,市場第一部(内国株) 1605,国際石油開発帝石,1050,市場第一部(内国株) 1606,日本海洋掘削,1050,市場第一部(内国株) 1662,石油資源開発,1050,市場第一部(内国株) 1663,K&Oエナジーグループ,1050,市場第一部(内国株) 1712,ダイセキ環境ソリューション,2050,市場第一部(内国株) :