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,市場第一部(内国株) :