Ich bin brandneu zu F #, also entschuldige ich mich, wenn ich die falschen Namen für Dinge verwende.Verwenden von Pipe Forward mit verschachtelten Sequenzen
Ich versuche, F # zu verwenden, um eine Webseite zu analysieren, die etwa wie folgt aussieht:
<!--This is simplified, in reality there are more divs, anchors etc. -->
<html>
<body>
<div class="pr-single"><a href="http://google.ca">Google</a></div>
<div class="pr-single"><a href="http://apple.com">Apple</a></div>
<div class="pr-single"><a href="http://microsoft.com">Microsoft</a></div>
</body>
</html>
ich einen Typen
type PromoterPage = FSharp.Data.HtmlProvider<"http://somewebpage.com">
erklärt habe und jetzt ich versuche zu bekommen eine Liste aller Links auf der Seite. Mein Denkprozess war:
- Holen Sie sich alle äußeren divs von Klassennamen
- Holen Sie sich die Nachkommen aller dieser divs
- diese Nachkommen in eine flache Liste sammeln
- Filter diese Liste nach unten nur zu
<a>
Tags
bei dieser Mein Versuch ist unter:
let GetFirst (page:PromoterPage) =
page.Html.Descendants()
|> Seq.filter(fun n -> n.HasClass("pr-single")) //Find the divs
|> Seq.map(fun n -> n.Descendants()) //Get the descendants
|> Seq.collect(fun n -> n |> Seq.where(fun m -> m.HasName("a")) //Filter and collect the anchors
Das Problem scheint zu sein, dass Sie Seq
Funktionen nicht verschachteln können oder dass ich es nicht richtig mache. Ich erhalte die Fehlermeldung:
Incomplete values or function definition. If this is an expression, the body of the expression must be indented to the same column as the keyword.
Kann ich Nest Seq
Funktionen so, wie ich hier bin versucht? Denke ich darüber falsch?
Wow, das ist peinlich. :) Vielen Dank! – JoshVarty