2016年12月5日 星期一

擷取期交所小型台指期 (MTX) 每日行情的方法

這幾天演練 PHP 爬蟲程式的寫法, 對象是期交所小型台指期 (MTX) 的每日行情表, 其網址為 :

http://www.taifex.com.tw/chinese/3/3_1_1.asp

不過連線這個網址預設是查詢大台 (MX) 的行情表, 小型台指期 (MTX) 必須在契約欄位選擇 "小型台指 (MTX)" 後, 按 "送出查詢" 後才會顯示小台資料 :



顯然這是透過表單以 POST 方法查詢, 其參數可在 Firefox 或 Chrome 按 F12 查得 :


雖然一共傳出 15 個參數, 但實際上只用到框起來的五個參數而已. 所以如果要抓今天的行情表資料, 可以利用 cURL 函式庫來擷取, 程式如下 :

/* 載入函式庫 */
include_once("../lib/http.php");    //匯入http模組     (必須)
/* 擷取目標網頁 */
$target="http://www.taifex.com.tw/chinese/3/3_1_1.asp";
echo "<a href='$target' target='_blank'>原始網頁</a><br>";
$ref=$target;
//取得交易日期 (今日)
$today=date("Y-m-d"); //2015-12-05
list($Y,$M,$D)=explode("-", $today); //分出年月日
echo "交易日期=".$today."(".$Y.$M.$D.")<br>";
//設定查詢表單 POST 方法參數
$para["qtype"]="2";
$para["commodity_id"]="MTX"; //小型台指
$para["syear"]=$Y;  //查詢年
$para["smonth"]=$M; //查詢月
$para["sday"]=$D;   //查詢日
$web_page=http_post_form($target,$ref,$para); //下載網頁檔
$file=$web_page['FILE'];  //取得網頁檔案內容
echo $file."<br>";

這是第一次嘗試用 POST 傳遞參數來擷取網頁, 以前我都一直使用 GET 方法, 沒想到 POST 其實也很容易, 只是要先查出必須傳遞那些必要參數而已.


沒有留言 :