ブログラム修正することにした <株入門>

前回の問題への対応を今日は考える。


 
このままだと、読み進めても、動作が違ってしまう。
やはり、支障あるかと思い、プログラムの改造を試みる。
 
現在のソフトバンクのページのHTMLのソースコードから、
上場市場と単元株数に該当する部分を見つけて、抜き出す。
そのためのパターンを新たに用意し、既存同様に動作させる。

それが目的。
で、lib/stock_list_maker.rbファイルを以下のように改造。


# HTMLから銘柄情報を抜き出す
def parse(text)
data = Hash.new
sections = []

#修正開始
#reg_market = /yjSb">([^< ]+) ?</
#reg_unit = %r!<dd class="ymuiEditLink mar0"><strong>((?:\d|,)+|—)</strong>株</dd>!
#text.lines do |line|
# if line =~ reg_market
# sections << $+
# elsif line =~ reg_unit
# data[:market_section] = sections[0]
# data[:unit] = get_unit($+)
# return data
# end

reg_market = %r!<div class="stockMainTabParts stockMainTabPartsCurrent"><span class="stockMainTabName">([^< ]+) ?</span>!
reg_unit1 = %r!<dl class="tseDtlDelay"><dd class="ymuiEditLink mar0"><strong>((?:\d|,)+|—)</strong>株</dd>!
reg_unit2 = %r!<dt class="title">単元株数!

data[:unit] =""
text.lines do |line|
 if data[:unit] != ""
  if line =~ reg_unit2
   data[:market_section] = sections[0]
   return data
 
  else
   data[:unit] =""
 
  end

 elsif line =~ reg_market
  sections << $+
  
 elsif line =~ reg_unit1
  data[:unit] =get_unit($+)
 
 end

end

#修正ここまで

data
end

もっと簡潔に書けるのでしょうけど、今のワタクシには正確に分かりません。
そのツッコミは無しで、思い浮かんだ処理の流れに素直に書きました。
 
マッチさせる文字列は敢えて、長めに取りました。
その方が分かりやすいから。
 
上場市場の方は、
stockMainTabPartsの最初のところなので見つけるのは比較的容易です。

単元株数は若干厄介で、
表示上は「単元株 999,999株」と見えるんですが、
HTMLのソースコードは逆。データ→見出しの順で書かれ、
しかも改行されてる。
最初の行の条件だけだと、「出来高」がヒットしてまう。
更に、
この改行が任意なのか固定なのかも分かりません。
しかし、任意と考えるともっと修正長くなるし、
多少検索からこぼれてしまっても、動作確認は出来るだろうから、
改行されると決め打ちしました。
とすると、
判定は必ず2行にわたるので、
最初の行はymuiEditLinkの要素で、「株」と単位が付くもの。で、
次の行は、「単元株数」という文字が出て来るもの。
となります。

で、処理は、
data[:unit]にデータがあれば、単元株数の一行目ヒットした直後なので、
この行が単元株数の二行目かどうか判定する。
ヒットなら確定。
ヒットしなければ、data[:unit]をクリアして、以下繰り返し。
それ以外(data[:unit]にデータ無し)なら、
上場市場、単元株数の一行目を順に探す。
どちらかがヒットしたら、それぞれデータを格納。
以下繰り返し。 
 
これで、プログラムを実行すると、
1300-9999の範囲の銘柄コードに対して、
3493件のデータが取得できました。
違う部位のデータを取るということは無いようです。
 
取りこぼしについては分かりませんが、
動作確認上はこれだけあれば、問題ないでしょう。

これで安心して、本書に戻れます。

なお、ソースコード等をこのブログで表示するため、
↓にお世話になりした。逆変換も可能とのことです。
HTML特殊文字変換ツール
http://tech-unlimited.com/escape.html

 

質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

カテゴリー: 未分類, 株式投資, 株式投資入門はじめました2016.05 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*