前言
去年用Ruby寫的程式,主要是爬以下三個網頁:
你一定會問都有網頁查詢了,你還爬個屁阿!主要是他提供的資料都是以月份為最單位,若你要抓X年的資料你就要點12*X次,你若要抓Y檔股票,那你總共要點12*X*Y次,所以在父親大人的督促之下,就寫了這三隻爬蟲給他用,修改程式裡頭的時間範圍跟代號,就會去網頁爬一輪回來產生一隻CSV檔案(可用excel開啟)給使用者。
產生檔案範例可參考:
安裝及使用方法
- 安裝Ruby。
- 到命令提示字元,執行以下指令:gem install mechanize,這是為了安裝一個用Ruby寫的函式庫。
- 下載檔案,解壓縮到到任意路徑。
- 直接編輯程式碼最下面的參數,儲存後點兩下執行即可。
修改查詢參數
可執行且需要使用者重新編輯的檔案,根據網頁連結命名分別為:
- otc_daily_trading_info.rb
- twse_mi5_mins_hist.rb
- twse_stock_day.rb
需要重新編輯的程式碼大概都長得像這樣:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 以下區塊為主程式執行區段: | |
# | |
# 查詢參數分別為: | |
# 開始年(西元) | |
# 開始月 | |
# 結束年(西元) | |
# 結束月 | |
# 開始年 | |
# 股票代碼 | |
start_year = 2009 | |
start_month = 10 | |
end_year = 2009 | |
end_month = 10 | |
stock_code_list = [2002, 6285] |
後話
東西寫出來沒再用也是浪費,好一陣子沒用RUBY了,遇到問題請自己上網查或買書看,不要輸給我五十幾歲的老爸。
4 則回應:
感謝!!!!
寫出這種東西
真是功德無量
前陣子才決定開始研究Ruby
至今仍一事無成的小弟
真是........
資料庫是即時更新嗎?
@城市行走者
術業有專攻 :-)
@jain
資料庫不是我維護的
是證交所維護的
您好,
找了許多下載大盤指數的網頁,
看到您的rb程式,把ruby裝了起來,
先試跑看看,
otc_daily_trading_info.rb OK
會在 report 資料夾下產生
csv檔,
但
twse_mi5_mins_hist.rb
twse_stock_day.rb
這兩個程式似乎沒反應,
是證交所的網頁程式檔名修改了嗎?
我有找到可捉到每日行表的語法,並可直接存檔excel csv 檔,
但加權指數歷史資料可以嗎? 感恩囉!
每日行表的語法:
http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX3_print.php?genpage=genpage/Report201006/A11220100611ALL_1.php&type=csv
我亂試,好像找不到正確的方法:
http://www.twse.com.tw/ch/trading/indices/MI_5MINS_HIST/MI_5MINS_HIST.php?myear=98&mmon=05&save=csv
stiven 留