プログラムな話続いてますが、お付き合いください。
ヤフーファイナンスからデータ取得するプログラムが思ったように動作しない。
いや、動くことは動くのだが、なんかおかしい。
例えば、銘柄コード9984 ソフトバンクのデータが取れない。
ファイルを見てみると、ETFとREITのデータしか取れてない。
東証一部の個別株のデータは取れていない。
いろいろ原因を疑ってみた、
最初はプログラム上の不具合かとも思った、
小一時間ほどして、原因が分かった。
ヤフーファイナンスのページのHTMLのソースコードが変わっている。
現状のソフトバンクのページでは、それぞれ以下のように表示されている。
上場市場↓、
<span class="stockMainTabName">東証1部</span>
単元株数↓
<dd class="ymuiEditLink mar0"><strong>100</strong>株</dd>
<dt class="title">単元株数
一方、Rubyのプログラムでは、
StockListMakerクラスのparseメソッドにて、ページ内の文字列を検索している。
上場市場↓、
正規表現/yjSb">([^< ]+) ?</
⇒ yjsb">XXXX </ を見つける。
単元株数↓
正規表現%r!<dd class="ymuiEditLink mar0"><strong>((?:\d|,)+|—)</strong>株</dd>!
⇒ <dd class="ymuiEditLink mar0"><strong>999,999</strong>株</dd> を見つける。
正規表現の説明としては正確ではないのだが、大体の雰囲気はそういうこと、
で、
投信のページではこれでもヒットする。(ただし、上場市場は別の情報。)
個別株と投信では、それぞれのページの書式が違うから。
恐らく、このソースコードが書かれたときと、個別株のページのデザインが変わっているのだろう。
方針としては、検証まで到達出来るのなら、先に進みます。
原理さえ分かれば、実用に耐えるものに改良するのは後でもいい。
ですが、先行きが不明なので、
個別株のデータを取るように、プログラムの改修もトライして見ようと思います。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。