F # ve FSharp.Data kütüphanesi kullanılarak web sayfalarından hisse senedi temettü verisini kazımayı deniyorum. Örnek bir sayfa http://www.nasdaq.com/symbol/ibm/dividend-history'da görülebilir. Web kazıma stok temettü verileriyle F #
web sayfasını istemek için, benim kod örnek olarak basit bir konsol uygulaması olarak kurulduktan ve aşağıdaki gibidir: çalıştırmakopen 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
, RequestString yöntemi hataları ile:
"Bir işlenmeyen 'System.ArgumentOutOfRangeException' türü istisnası FSharp.Core.dll dosyasında oluştu
Ek bilgi: Uzunluk sıfırdan küçük olamaz. "
Bu sayfa, "geleneksel" kazıma yaklaşımlarının bir şekilde işlenmesi gibi biçimlendirilmiş gibi görünmüyor. Herhangi bir fikir veya düşünce takdir edilecektir.
Bunu kendim denedim ve şunu buldum: '' [email protected] (Int32 i, String cookiePart) ... FSharp.Data \ src \ Net \ Http.fs: satır 675 gerçek çöküşün olduğu yerdi. İlk "=" sembolüne kadar bir uzunluk elde etmek için 'String.Substring'ı çağırmaya çalışıyor. Ne yazık ki, bu, "=" sembolü olmadığında -1 değerini veren String.IndexOf kullanılarak tanımlanır. İlgili kaynak kodu: https://github.com/fsharp/FSharp.Data/blob/master/src/Net/Http.fs#L674 ve yorum: '.NET bazı çerezleri ayrıştırmakta zorlanıyor. Http: // stackoverflow.com/a/22098131/165633’e bakın – Ringil