はじめに
Pythonで、Webスクレイピングにより、日経平均株価を取得します。
Webスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のことを指します。
なお、本方法は、2019/2/12時点で実現可能であることを確認しましたが、Pythonのモジュールの仕様変更や、ホームページの仕様変更により、取得できなくなる可能性があります。
Webスクレイピング方法
Yahooの日経平均株価のページをChromeで開いたら、空白部分で右クリックして、「ページのソースを表示」でHTMLデータを表示させます。
そして、株価が表示されている部分を探します。(ここでは、日経平均株価で検索しました)
<table class="stocksTable" summary="株価詳細">
<tr>
<th class="symbol"><h1>日経平均株価</h1></th>
<td class="stoksPrice realTimChange">
<div class="realTimChangeMod">
</div>
</td>
<td class="stoksPrice">20,864.21</td>
<td class="change"><span class="yjSt">前日比</span><span class="icoUpGreen yjMSt">+531.04(+2.61%)</span></td>
</tr>
</table>
<td class="stoksPrice">20,864.21</td>
のように、class属性stoksPriceに、株価が記述されていることがわかりました。
class属性を条件に要素を取得するためには.クラス名
のように指定します。
そして、どのパラメーターを参照すれば日経平均株価の値が取得できるか確認します。
ここでは、PythonのIDEであるPyCharmのデバッグを使用する方法を用いました。
[手順]
(1) PyCharm上でコードを記載
(2) stoksPrice = bs.select('.stoksPrice')
のところにブレークポイントをセット
(3) プログラムをデバッグモードでスタートさせて、ブレークポイントで停止させ、1行コードを進めて、stoksPrice 変数の中身を確認
(4) [1].text
の要素に株価情報があることを確認したので、コードに反映させる
import urllib.request as request
from bs4 import BeautifulSoup
def get_stock_price(url):
response = request.urlopen(url)
bs = BeautifulSoup(response, 'html.parser')
stoksPrice = bs.select('.stoksPrice')[1].text
return stoksPrice
url = 'https://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O'
result = get_stock_price(url)
print(f'日経平均株価は{result}円です。')
url2 = 'https://stocks.finance.yahoo.co.jp/stocks/detail/?code=8411.T'
result = get_stock_price(url2)
print(f'みずほ銀行の株価は`{result}円です。')
日経平均株価は20,864.21円です。
みずほ銀行の株価は173.4円です。
感想
PyCharmを使った方法以外に、もっと簡単に取得したいパラメーターの要素を取得する方法があるかもしれません。方法があれば、展開したいと思います。