2014年5月21日 星期三

【分享】在Ubuntu使用wget下載網址帶有參數的檔案

今天在Ubuntu中下載一個檔案,網址中是帶有參數的,如:
$ wget -O stock_2330.csv http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/STOCK_DAY_AVG2.php?STK_NO=2330&myear=2014&mmon=05&type=csv
結果在終端機中顯示的結果訊息為:
[1] 17936
[2] 17937
[3] 17938
javakid@javakid-VM:~/tools$ --2014-05-20 23:54:41--  http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/STOCK_DAY_AVG2.php?STK_NO=2330
正在查找主機 www.twse.com.tw (www.twse.com.tw)... 210.69.240.130
正在連接 www.twse.com.tw (www.twse.com.tw)|210.69.240.130|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 0 [text/html]
Saving to: ‘stock_2330.csv’

    [ <=>                                   ] 0           --.-K/s   in 0s      

2014-05-20 23:54:41 (0.00 B/s) - ‘stock_2330.csv’ saved [0/0]


[1]   Done                    wget -O stock_2330.csv http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/STOCK_DAY_AVG2.php?STK_NO=2330
[2]-  Done                    myear=2014
[3]+  Done                    mmon=05
看上列結果,好像沒下載到什麼東西,進一步查看檔案:
$ ll stock_2330.csv 
-rw-r--r-- 1 javakid javakid 0  5月 21 00:04 stock_2330.csv
才發現檔案大小為「0」。

查了一下,發現原來可能是有帶參數的關係,主要是後面的?&這兩個符號在剖析時造成了意外的結果。

解法是,把要請求的網址,用'(單引號)包起來就好,如:
$ wget -O stock_2330.csv 'http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/STOCK_DAY_AVG2.php?STK_NO=2330&myear=2014&mmon=05&type=csv'
這樣就下載為想要的檔案:
$ ll stock_2330.csv 
-rw-r--r-- 1 javakid javakid 360  5月 21 00:12 stock_2330.csv
用編輯開啟後,也可以看到正常的結果:
$ cat stock_2330.csv 
103年05月 2330 台積電 日收盤價及月平均收盤價(元)
日期,收盤價
 103/05/02,118.00
 103/05/05,117.00
 103/05/06,118.00
 103/05/07,118.50
 103/05/08,119.50
 103/05/09,120.00
 103/05/12,118.50
 103/05/13,120.50
 103/05/14,122.00
 103/05/15,122.00
 103/05/16,122.00
 103/05/19,121.00
 103/05/20,121.00
月平均收盤價,119.85
說明:以上成交資料採市場交易時間之資料計算。

沒有留言: