一、 总体思路
1. 使用浏览器的调试功能分析出大商所套利保证金参数的WEB API。
2. 使用curl请求数据。
3. 使用awk和sed进行数据处理,生成sql语句。
4. 使用sqlplus导入oracle数据库。
二、 分析大商所套利保证金参数的WEB API
得到大商所套利保证金参数的WEB API为GET URL:http://www.dce.com.cn/publicweb/notificationtips/marginArbiPerfPara.html
三、 curl请求数据
使用curl把marginArbiperfPara.html落到本地
curlhttp://www.dce.com.cn/publicweb/notificationtips/marginArbiPerfPara.html-o marginArbiperfPara.html
有效数据格式如下图
四、 使用awk和sed进行数据处理
脚本如下:
awk -f genmargin.awk marginArbiperfPara.html | tr -d '\r' | sed's/<[^>]*>/ /gp' | awk '{printf("insert intotb_dce_arbitrage_marginrate values(\047%s\047, \047%s\047, \047%s %s \047, %d,%.2f);\n", $1,$2,$3,$4,$5,$6);}'
genmargin.awk内容
/<tr>/, /<\/tr>/ {
record = record $0;
next;
}
length(record) > 0 {
print record;
record = "";
}
这条命令的输出就是我们需要的sql语句,
把输入另存为文件dce_arbitrage_marginrate.sql
对上管道线包含的命令感兴趣的同学欢迎和我探讨
五、 把数据导入oracle数据库
1. 新建大商所套利保证金优惠参数表
create table tb_dce_arbitrage_marginrate
(
strategyvarchar(50),
productvarchar(30),
instrumentvarchar(50),
priority integer,
margin number(20,4)
);
comment on table tb_dce_arbitrage_marginrate is '大商所套利保证金优惠参数';
comment on column tb_dce_arbitrage_marginrate.strategy is '套利交易策略';
comment on column tb_dce_arbitrage_marginrate.product is '品种';
comment on column tb_dce_arbitrage_marginrate.instrument is '套利交易合约';
comment on column tb_dce_arbitrage_marginrate.priority is '优先级';
comment on column tb_dce_arbitrage_marginrate.margin is '交易保证金额(手)';
2. 用sqlplus导入dce_arbitrage_marginrate.sql
sqlplus @ dce_arbitrage_marginrate.sql
六、 搞定!