[Python]Yahoo!ファイナンスの株価をWEBスクレイピングするサンプルコード

コードを引数にして株価を取得したい

株価を取得したいというニーズは昔からある様子。2000年以前の書籍を見ても、株価を取得するサンプルコードがあった。htmlのタグ付けなど大きく変わっているだろうから、そのままは使えない。Pythonで書き直してみることに。

株価の情報はYahoo!ファイナンスから

他のサイトでもいいんだけど、URL設計がしっかりとしていて、タグ付けがちゃんとしていそうなので、ここにした。
>>>Yahoo!ファイナンス – 株価やニュース、企業情報などを配信する投資・マネーの総合サイト

株価詳細ページ

ソニーの詳細ページを見てみる。
URLは、

http://stocks.finance.yahoo.co.jp/stocks/detail/?code=6758.T

となっている。
ここから、ある推測が出来る。
ベースURLはきっと、

http://stocks.finance.yahoo.co.jp/stocks/detail/

だ。

パラメーターとして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 el in l:
symbol,stockprice = get_stockprice(el)
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

スクレイピングについて興味をお持ちの方は

Python初学者で、スクレイピング以外にもいろいろいじりたくて、スクレイピングもちょこってやってみたい方には以下がお勧め。
Pythonのスクレイピング関連は様々な書籍が出版されておりますが、2018/12/09時点では以下がベストです!!!

コメント