- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 4501 个
- 通用积分
- 76.6084
- 学术水平
- 171 点
- 热心指数
- 204 点
- 信用等级
- 133 点
- 经验
- 24581 点
- 帖子
- 584
- 精华
- 1
- 在线时间
- 1862 小时
- 注册时间
- 2008-5-25
- 最后登录
- 2023-9-20
|
- data test;
- input wangzhi : $200.;
- cards;
- https://bbs.pinggu.org/thread-5644000-1-1.html
- http://www.163.com/
- http://www.autohome.com.cn/ningbo/
- http://map.baidu.com/
- http://www.ifeng.com/
- http://www.qq.com/
- ;
- run;
- /*宏变量n,表示网址个数,用于宏程序循环判断*/
- proc sql noprint;
- select count(wangzhi) into : n from test;
- run;
- quit;
- %macro titles;
- %do i=1 %to &n;
- /************************************/
- /*把每个具体网址存入宏变量wangzhi*/
- data _null_;
- set test;
- if _n_=&i then call symput('wangzhi',wangzhi);
- run;
- /************************************/
- /*默认编码方式导入网页,当网页utf8编码时,中文乱码!*/
- FILENAME SOURCE URL "&wangzhi";
- DATA test1;
- retain charset;
- INFILE SOURCE obs=500 truncover;/*每个网页读入前500条*/
- INPUT line $500.;
- pattern1=prxparse('/^\s*<meta.*charset.*=.*([Uu][Tt][Ff]-[8]).*$/o');
- pattern2=prxparse('/^\s*<title>(.*)<\/title>\s*$/o');
- if prxmatch(pattern1,line) then charset=prxposn(pattern1,1,line);/*网页是否utf8编码*/
- if prxmatch(pattern2,line) then do;
- title=prxposn(pattern2,1,line);
- output;
- end;
- if prxmatch(pattern2,line);
- RUN;
- /*utf8编码方式导入网页,当网页非utf8编码时,中文乱码!*/
- FILENAME SOURCE URL "&wangzhi" encoding=utf8;
- DATA test2;
- retain charset;
- INFILE SOURCE obs=500 truncover;
- INPUT line $500.;
- pattern3=prxparse('/^\s*<title>(.*)<\/title>\s*$/o');
- if prxmatch(pattern3,line) then title_utf8=prxposn(pattern3,1,line);
- if prxmatch(pattern3,line);
- RUN;
- /*根据网页是否utf8编码,纠正乱码*/
- data test3;
- merge test1 test2;
- if lowcase(charset)='utf-8' then title=title_utf8;
- keep title;
- run;
- /*test3只完成了对一个网址的题目提取,通过循环追加到test4中*/
- proc append base=test4 data=test3;
- run;
- /*为方便查看,加入网址变量*/
- data want;
- merge test test4;
- run;
- /************************************/
- %end;
- %mend titles;
- %titles
复制代码
|
-
总评分: 经验 + 20
热心指数 + 1
查看全部评分
|