2
我試圖用F#和FSharp.Data庫從網頁刮取股票紅利數據。示例頁面可以在http://www.nasdaq.com/symbol/ibm/dividend-history處看到。F網刮股票分紅數據#
要請求的網頁,我的代碼是建立一個簡單的控制檯應用程序作爲一個實例,如下所示:
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
運行的時候,用RequestString方法錯誤:
「未處理FSharp.Core.dll中發生類型'System.ArgumentOutOfRangeException'異常
附加信息:長度不能小於零。「
它看起來像頁面被格式化的方式,以「傳統」的刮取方法將無法正常工作。任何想法或想法,將不勝感激。
我自己試了一下,發現:在'[email protected](Int32 i,String cookiePart)in ... FSharp.Data \ src \ Net \ Http.fs:line 675 '是實際墜機的地方。它試圖調用'String.Substring',這樣你就可以得到第一個「=」符號的長度。不幸的是,這是使用String.IndexOf定義的,當沒有「=」符號時它會給出-1。相關的源代碼:https://github.com/fsharp/FSharp.Data/blob/master/src/Net/Http.fs#L674和評論:'.NET在解析一些cookie時遇到困難。請參閱http:// stackoverflow.com/a/22098131/165633 – Ringil