Ich versuche Aktien Dividenden Daten von Webseiten mit F # und die FSharp.Data Bibliothek zu kratzen. Eine Beispielseite ist unter http://www.nasdaq.com/symbol/ibm/dividend-history zu sehen.Web Scraping Aktien Dividend Daten mit F #
die Web-Seite anzufordern, ist mein Code-Setup als eine einfache Konsolenanwendung als Beispiel und ist wie folgt:
open FSharp.Data
[<EntryPoint>]
let main argv =
let url = "http://www.nasdaq.com/symbol/ibm/dividend-history"
let result = Http.RequestString(url)
System.Console.ReadLine() |> ignore
0 // return an integer exit code
Sobald er ausgeführt wird, die request Methode Fehler mit:
„Eine nicht behandelte Ausnahme vom Typ 'System.ArgumentOutOfRangeException' in FSharp.Core.dll aufgetreten
Zusätzliche Informationen: Länge kann nicht kleiner als Null sein. "
Es sieht so aus, als ob die Seite so formatiert ist, dass "traditionelle" Scraping-Ansätze nicht funktionieren. Irgendwelche Ideen oder Gedanken würden geschätzt werden.
Ich habe dies selbst ausprobiert und festgestellt, dass: an '[email protected] (Int32 ich, String cookiePart) in ... FSharp.Data \ src \ Net \ Http.fs: Zeile 675 'war, wo der eigentliche Unfall war. Es wird versucht, 'String.Substring' aufzurufen, so dass Sie eine Länge bis zum ersten" = "Symbol erhalten. Leider wird das mit String.IndexOf definiert, das -1 gibt, wenn kein "=" Symbol vorhanden ist. Relevanter Quellcode: https://github.com/fsharp/FSharp.Data/blob/master/src/Net/Http.fs#L674 und Kommentar: '.NET hat Probleme beim Parsen einiger Cookies. Siehe http: // stackoverflow.com/a/22098131/165633' – Ringil