Skip to content

Instantly share code, notes, and snippets.

@callmekohei
Last active August 28, 2017 06:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save callmekohei/fb2ef8732c31f1dc288c62241ff0ffa8 to your computer and use it in GitHub Desktop.
Save callmekohei/fb2ef8732c31f1dc288c62241ff0ffa8 to your computer and use it in GitHub Desktop.
#r "./packages/FSharp.Data/lib/net40/fsharp.data.dll"
open FSharp.Data
let url = @"http://fx.minkabu.jp/indicators/calendar"
stdout.WriteLine("===== みんなの為替 =====\n")
Http.RequestString( url , responseEncodingOverride = "UTF-8")
|> HtmlDocument.Parse
|> fun doc ->
// rowspan list
let l = doc.CssSelect( ".indicator_announcement > td.cell00")
|> List.map ( fun (n: HtmlNode ) -> HtmlNode.attribute "rowspan" n )
|> List.map ( fun (x: HtmlAttribute) -> HtmlAttribute.value x )
|> List.map ( fun s -> int s )
let date = doc.CssSelect(".indicator_announcement > td.cell00.center")
|> List.map ( fun n -> n.InnerText() )
|> List.map ( fun s -> s.Trim() )
|> List.map ( fun (s:string) -> s.Replace("\n",""))
let time = doc.CssSelect(".indicator_announcement > td.cell01.center")
|> List.map ( fun n -> n.InnerText() )
|> List.map ( fun s -> s.Trim() )
let indicators = doc.CssSelect(".indicator_announcement > td.cell03")
|> List.map ( fun n -> n.InnerText() )
|> List.map ( fun s -> s.Trim() )
let l' = (time,indicators) ||> List.map2 ( fun a b -> a + "\t" + b )
let l'' =
l |> List.fold (fun (acc, input) n ->
let (h, t) = List.splitAt n input
(h :: acc, t)
) ([], l')
|> fst
|> List.rev
List.zip date l''
|> List.iter ( fun (a,b) ->
stdout.WriteLine("----- " + a + " -----")
List.iter ( fun (s:string) -> stdout.WriteLine(s) ) b
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment