这是一个用SAS直接获取SAS抓网页数据代码,而我也是在别人的基础上进行修改的,其实就是多了一个数据清洗。
这个是原始代码:
filename etf url 'http://www.sse.com.cn/sseportal/webapp/datapresent/ETF50downlad?SEQ_ID=12889' RECFM=v lrecl=1000;
data _tmp;
file _webout;
infile etf length=len;
length content $32766. ;
input content $varying32766. len;
run;
这个代码把所有信息读入到一个变量中,没有根据字段分开,也没有去掉头部、尾部的非数据信息。
于是根据实际的需求,将代码进行了优化,得到的是整理后的信息。
具体用的的数据步的指令有do until……end;
并且用一个a作为信号指标,对当时所处的状态进行记录,do until对状态进行判断,这样做到对数据的清洗整理,使获得我们真正需要的数据。
代码:
filename etf url 'http://www.sse.com.cn/sseportal/webapp/datapresent/ETF50downlad?SEQ_ID=12889' RECFM=v lrecl=1000; /*将网络数据保存到etf中*/
data _tmp;
file _webout;
infile etf length=len dlm='|'; /*分割符为 | */
do until (a=1); /*a的原始值为缺失,当a被赋值1时,说明数据指针已经达到需要数据的头部*/
input id $ ;
if id="TAGTAG" THEN a=1; /*当发现头部标志时赋值a为1*/
end;
do until (a=2);
input id $ name $ d e f g;
if id ne "ENDEND" then output;
else a=2; /*当发现尾部标志时赋值a为2*/
end;
drop a; /*丢弃信号变量a*/
run;
/*-------END----------*/