###前提・実現したいこと
日経(http://www.nikkei.com/nkd/?MsgId=1)から株価の売買単価を取得し、
txtファイルとして保存したい
###該当のソースコード
Ruby
1 def test(code) 2 3 data = open("http://www.nikkei.com/nkd/company/?scode=#{code}", &:read) 4 5 market = data.scan(/<span class="m-company_data_select_btn .+?" data-tab=".m-company_data_option_mk" >(.+?)<\/span>/).flatten.first 6 stock = data.scan(/<span class="m-stockInfo_detail_value">([\d,]+)<span class="m-stockInfo_detail_unit"> 株/).flatten.first 7 8 [code, market, stock] 9 end
###困っていること
stockの正規表現(<span class="m-stockInfo_detail_unit"> 株)と一致する場所が3か所あり、
その中で売買単価だけを取得したい。
参考→view-source:http://www.nikkei.com/nkd/company/?scode=3193
###試したこと
①複数行に該当するよう変更
stock = data.scan(/<span class="m-stockInfo_detail_title">売買単位<\/span>.<span class="m-stockInfo_detail_value">([\d,]+)<span class="m-stockInfo_detail_unit"> 株/m).flatten.first
結果 → マッチせず
②stockを配列とし、3つ目に保管されているはずの売買単価を抜き出す
def test(code) stock = [] data = open("http://www.nikkei.com/nkd/company/?scode=#{code}", &:read) market = data.scan(/<span class="m-company_data_select_btn .+?" data-tab=".m-company_data_option_mk" >(.+?)<\/span>/).flatten.first stock = data.scan(/<span class="m-stockInfo_detail_value">([\d,]+)<span class="m-stockInfo_detail_unit"> 株/).flatten.first [code, market, stock[2]] end
結果
3193,東証1部,2 3194,東証1部,, 3195,マザーズ,5 3196,東証1部,1 3197,東証1部,4
調べてもよく分からなく、
分かる方はどうかお助けくださいませ。
###補足情報(言語/FW/ツール等のバージョンなど)
・Ruby 2.3.3
・Eclipseプラットフォーム 4.6.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/02 05:37