show code js

2015年7月14日 星期二

股票平台建立記錄「二」取得有價證券代號及名稱

$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
有了股票群組代碼,接著就是要抓取股票代號及名稱,$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
使用上一篇的連接,可以發現 http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK01.php?STK=01 中的01就是群組代號,若要抓「造紙工業」就是 http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK09.php?STK=09$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
因此抓股票代號就要使用上篇抓到的群組資料來進行$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
// 群組資料庫(略)$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$type = array();$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$num = count($type);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
for( $i = 0 ; $i < $num ; $i++ )$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
{$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$url = 'http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK' . $type[$i] . '.php?STK=' . $type[$i];$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$text = file_get_contents($url); $t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
preg_match_all('/]*)>([^<>]*)<\/span>/', convert85str($text), $match);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$type_num = count($match[0]);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
for( $j = 0 ; $j < $type_num ; $j++ )$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
{$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$stock = explode(" ", $match[0][$j]);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
echo '$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
' . str_replace("","",$stock[0]) . ',' . str_replace("","", $stock[1]);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
}$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
}$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
抓到的資料會在頁面呈現 [股票代號],[股票名稱]$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
唯一美中不足的就是無法分辨,已下市或其他成分。$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
另外,也可以抓 本國上市證券國際證券辨識號碼一覽表 的資料來充實股票代號的資訊

股票平台建立記錄「一」取得證券群組代號及名稱

此作為個人建立股票平台記錄用$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
首先要取得分類,並建立分類資料表,可以連到 臺灣證券交易所 取得,$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
而由 如何擷取所有的股票代號| Justlink 碎碎念 得知直接連結為 選擇證券代號$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
但由於選擇證券代號是一iframe頁面,因此,再了解結構後可以得到更直接的頁面連結為 http://www.twse.com.tw/ch/trading/inc/STKCHOICE/data_Top.htm$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
然後使用php來抓取並轉成sql指令,當然table要先設計好欄位要放什麼資料$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
接著利用以下程式碼來展出列表:$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
url = 'http://www.twse.com.tw/ch/trading/inc/STKCHOICE/data_Top.htm';$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$text = file_get_contents($url); $t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$text = convert85str($text);$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$preg='/echo '$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
' . $temp[0] . ',' . $temp[1]; // 證券群組代碼,證券群組名稱$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
}
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
其中由1開始是避開選擇項目的第一項及48是去除後面不必要的群組,當然,如果將來群組調整了,48這個數字就表示不是固定的一組數字,可以檢閱直接連接的原始程式碼後自已去計算總共要抓多少筆
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
由於只是隨便寫寫,因此截取代碼及名稱上,重覆使用了多次去除不必要的code

2015年7月7日 星期二

OMRON NJ-SQL初始化

1.首先建立CPU資料及I/O$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
2.設定內置EtherNET/IP通訊協定$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
  • 設定PLC的IP位置及閘道
  • 設定路由表
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
3.設定連接SQL
  • 先在要使用的數據庫配置好數據庫名稱、使用者及帳戶,並將預設的資料表建立
  • DB連線設定:連線名稱將用來作「資料庫連接用」(如SQL_DB)
  • 設定數據庫類型:支援ORACLE、SQL SERVER、DB2、MYSQL及FIREBIRD
  • 設定數據庫名稱、使用者名稱及密碼(及密碼再次確認)
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
4.建立數據類型(資料表)
  • 依照NJ的要求,各欄位應對應合適的欄位型別
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
5.撰寫程式,連結資料庫
  • 使用SQL_CONNECT物件
  • DBCONNECTTONAME使用先前建立好的DB連線名稱
  • ERRORID建立一變數名稱,方便追蹤錯誤訊息代碼
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
6.測試連線$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk
$t+sDqe{Oq_nE*})G0nw]~F:2kjj<3{]K[VFUI%{v{Xz0VFJ1N{UlHOYvfrt9XvFjk