F# Monkey

about

F#言語を使ってロト6を当ててみる!(当選番号取得編)

f:id:callmekohei00:20170319095445p:plain

Summary

みずほ銀行のホームページから過去の当選番号を取得する

First Step

まずFSharp.Datanugetします

Second Step

こんな感じでデーター取得します

/// FSharp.Data.dll にパスをとおします
#r @"./packages/FSharp.Data/lib/net40/FSharp.Data.dll"
open FSharp.Data

/// 当選番号の書いてあるホームページアドレス
let url = @"http://www.mizuhobank.co.jp/takarakuji/loto/loto6/index.html"
/// 当選番号が書いてある css selector
let css = @"table.typeTK > tbody > tr > td.alnCenter.extension > strong"

/// HTMLを取得します 文字コードは utf-8 にしときます(文字化け対策)
Http.RequestString( url , responseEncodingOverride = "utf-8")

/// HTMLをF#で扱えるようにパース(構文解析)します
|> HtmlDocument.Parse

/// 当選番号が書いてある行を取り出します
|> fun doc -> doc.CssSelect( css )

/// 当選番号をとりだします
|> List.map ( fun n -> n.InnerText() )

/// ボーナス数字も含めた7つのくくりでリストをつくります
|> List.chunkBySize 7

/// ボーナス数字をカットします
|> List.map ( List.truncate 6 )

/// 表示します
|> List.iter( fun l -> printfn "%A" l )

結果

["05"; "17"; "20"; "28"; "39"; "42"]
["03"; "06"; "19"; "31"; "35"; "40"]
["14"; "19"; "22"; "23"; "28"; "43"]
["08"; "12"; "30"; "36"; "41"; "42"]
["04"; "15"; "20"; "24"; "26"; "30"]

Advance

先ほど作ったコードを使いやすくします

こんな感じで使えるようにします

#load @"./mizuho.fsx"
open mizuho.Mizuho

Atari loto6_head |> printfn "%A"

結果

[["1157"; "2017/03/16"; "05"; "17"; "20"; "28"; "39"; "42"];
 ["1156"; "2017/03/13"; "03"; "06"; "19"; "31"; "35"; "40"];
 ["1155"; "2017/03/09"; "14"; "19"; "22"; "23"; "28"; "43"];
 ["1154"; "2017/03/06"; "08"; "12"; "30"; "36"; "41"; "42"];
 ["1153"; "2017/03/02"; "04"; "15"; "20"; "24"; "26"; "30"]]


mizuho.fsxのコードはこちら〜

みずほ銀行のホームページから当選番号を取得するスクリプト · GitHub

mizuho.fsx のちょっとした解説

ちかいうちに書きます・・・

Remove all ads