證交所最佳五檔的程式解析
註: 2018/11/29,發現已經無法一次查詢多個代號,只能迴圈一個一個查。 今天是2017/1/16,一早發現網址又改,原來第3第4點的 getSTKInfo.jsp 改成 getS tock Info.jsp? ,而且也把json亂數表頭的方式移除,已緊急改程式了,請重新 下載程式 ( 程式碼在此 ) 2018/8/23,一早發現必須透過getStockInfo.jsp才是取得Session的地方,所以修改下面第一點 首先我要說明一下現在的日期是 2017年1月,因為 證交所最佳五檔的程式 的規則有時會變動,不見得適用未來的日子。 證交所提供了股票即時 最佳五檔 的網頁,供一般民眾查詢(但我相信,會觀注的多半是碼農,從 最佳五檔 的網址,它主要的Host是 mis.twse.com.tw ,這是我們要注意的第一個點,透過 dig command ,我們可以發現twse.com.tw網域用了4台DNS主機來應付輸詢,這也是我要提的第一個建議: 若不是用瀏覽器執行JavaScript程式 URL直接採用網址IP連結,不要使用mis.twse.com.tw網域,輸詢太多次會卡住,且若每次輸詢結果不一致時,會導致Session遺失 再來針對它的程式設計加以說明: 先說一下,用網頁查詢的網址格式是 http://mis.twse.com.tw/stock/fibest.jsp?lang=zh_tw&stock={代號} ,在瀏覽器下通常 lang=zh_tw 參數會被省略,但是程式設計時,請不要忘了要加上去。這是最重要的一個關鍵,因為我們必須在這頁取得Session(並且要保留),否則後面的資料存取將無以為繼,所以若是以程式要取得Session的第一件事就是連到 http://mis.twse.com.tw/stock/fibest.jsp?lang=zh_tw 我們取得這個網頁只是為了取得Cookie ,但現在除了這個功能外,還必須取得網頁並分析其中的3個Function:rA1()、rA2()與rA3(),因為後續取得的JSON屬性表頭不再是固定的字串,而是隨機定義在這三個函數內,我們必須透過分析JavaScript以瞭解JSON內容每個項目所代表的意義,取得範例的部分內容說明如下: 在以往,我們取得這個網頁只能...