У меня есть страница Wiki, и по определенным причинам меня интересует подсчет таблиц там.
По-видимому, глубоко в подпорках Lists
и Tables
представлены в виде последовательностей: ![enter image description here](https://i.stack.imgur.com/b51Ay.png)
Есть ли способ получить эти цифры в коде?
Я пробовал несколько ужасных хаков:
open System
open FSharp.Data
open FSharp.Data.Runtime
type Wiki = HtmlProvider<"https://en.wikipedia.org/wiki/F_Sharp_(programming_language)">
let getTablesCount (url : string) =
let data = Wiki.Load url
let tables = data.Tables
// won't compile - type constraint mismatch
// let attempt1 = tables :> Map<string, HtmlTable> |> Map.count
// won't compile - type is not compatible
// let attempt2 = tables |> Seq.cast<Tuple<string, HtmlTable>> |> Seq.length
// compiles - throws in the runtime InvalidCastException
// let attempt3 = (box tables) :?> Map<string, HtmlTable> |> Map.count
42
Ничего не работает, вероятно, навсегда.Может быть, я упускаю что-то очевидное?
Я готов проанализировать html с регулярным выражением , например, использовать для этого FSharp.Data HTML Parser, просто хочу быть уверен.