コードを引数にして株価を取得したい
株価を取得したいというニーズは昔からある様子。2000年以前の書籍を見ても、株価を取得するサンプルコードがあった。htmlのタグ付けなど大きく変わっているだろうから、そのままは使えない。Pythonで書き直してみることに。
株価の情報はYahoo!ファイナンスから
他のサイトでもいいんだけど、URL設計がしっかりとしていて、タグ付けがちゃんとしていそうなので、ここにした。
http://finance.yahoo.co.jp/
株価詳細ページ
ソニーの詳細ページを見てみる。
URLは、
http://stocks.finance.yahoo.co.jp/stocks/detail/?code=6758.T
となっている。
ここから、ある推測が出来る。
ベースURLはきっと、
だ。
パラメーターとしてcodeを渡す。コードの後ろには、「.T」が付く。
ここまで得た情報を元に、サンプルコードを組んでみる。
サンプルコード
import requests from bs4 import BeautifulSoup def get_stockprice(code): base_url = "http://stocks.finance.yahoo.co.jp/stocks/detail/" query = {} query["code"] = code + ".T" ret = requests.get(base_url,params=query) soup = BeautifulSoup(ret.content,"lxml") stocktable = soup.find('table', {'class':'stocksTable'}) symbol = stocktable.findAll('th', {'class':'symbol'})[0].text stockprice = stocktable.findAll('td', {'class':'stoksPrice'})[1].text return symbol,stockprice if __name__ == "__main__": symbol,stockprice = get_stockprice("6758") print symbol,stockprice
実行結果
>>> ソニー(株) 3,175
たくさんのコードを渡してみる。
せっかくなので、リストで渡してみましょうか。
l = [] l.append("8411") l.append("8306") l.append("3103") l.append("6803") l.append("6502") l.append("4689") l.append("8107") l.append("8303") l.append("9101") l.append("8604") l.append("6501") l.append("9972") l.append("6753") l.append("7201") l.append("6752") l.append("9501") l.append("7011") l.append("7647") l.append("7211") l.append("9104") for l2 in l: symbol,stockprice = get_stockprice(l2) print symbol,stockprice
実行結果
株)みずほフィナンシャルグループ 171.9 (株)三菱UFJフィナンシャル・グループ 519.4 ユニチカ(株) 71 ティアック(株) 42 (株)東芝 363.5 ヤフー(株) 420 (株)キムラタン 7 (株)新生銀行 163 日本郵船(株) 190 野村ホールディングス(株) 506.6 (株)日立製作所 535.3 アルテック(株) 210 シャープ(株) 167 日産自動車(株) 1,011.5 パナソニック(株) 977.2 東京電力ホールディングス(株) 415 三菱重工業(株) 424 (株)音通 32 三菱自動車(株) 538 (株)商船三井 237
見づれぇ~~~~~~~~~!!!
前株とか後株とかあるのな。。。ひとつに統一しろよwww
出力結果をテーブルに吐いてみた
最後をこうするだけ。
print "|",symbol,"|",stockprice,"|"