3802 3

SAS:读取网页数据 [推广有奖]

  • 0关注
  • 9粉丝

讲师

75%

还不是VIP/贵宾

-

威望
1
论坛币
-7 个
通用积分
5.0487
学术水平
30 点
热心指数
66 点
信用等级
35 点
经验
45336 点
帖子
202
精华
0
在线时间
443 小时
注册时间
2010-5-10
最后登录
2014-7-22

楼主
论坛数据分析 发表于 2011-1-11 12:05:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
方法1:
出处:http://elek.me/read-contents-from-websites-using-sas.html


  1. filename readweb url %nrstr("http://detail.zol.com.cn/cell_phone_index/subcate57_list_s528_1.html") lrecl=60000;
  2.   
  3. data tmp;
  4.     infile readweb lrecl=60000 dlm="><";
  5.     retain flag 0;
  6.     length title1 $ 20;
  7.     if flag=0 then do;
  8.         title="手机名称";
  9.         input @'id="proName_' @'>' content :$50. @@;
  10.         flag=1;
  11.         num+1;
  12.         if title="手机名称" then title1="name";
  13.         output;
  14.     end;
  15.     input @'<dd class="tit_new">' title :$50. @;
  16.     if title="上市日期" then do;
  17.         flag=0;
  18.     end;
  19.     input @'<dd class="con_new">' content :$50. @@;
  20.     if scan(content,1,"=")="a href" then input content :$50. @@;
  21.     if title="所属系列" then title1="series";
  22.     if title="操作系统" then title1="os";
  23.     if title="手机类型" then title1="type";
  24.     if title="网络模式" then title1="net";
  25.     if title="主屏尺寸" then title1="screen_size";
  26.     if title="主屏色彩" then title1="screen_color";
  27.     if title="触摸屏:" then title1="screen_type";
  28.     if title="摄像头像" then title1="camera";
  29.     if title="蓝牙功能" then title1="bluetooth";
  30.     if title="上市日期" then title1="date";
  31.     output;
  32.     drop flag;
  33. run;
  34.   
  35. proc transpose data=tmp out=want(drop=_name_);
  36.     var content;
  37.     by num;
  38.     id title1;
  39. run;
复制代码

 

此学习笔记针对主题:用sas下载网页数据

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Transpose Bluetooth contents Websites filename 数据 SAS 网页

老夫聊发少年狂

沙发
论坛数据分析 发表于 2011-1-11 12:15:20
Hi,

I have never work experience on fetch http or ftp files into SAS using SAS sysytem, but Hope the following sample helpful to you,

filename foo URL
'http://www.sas.com:80/service/techsup/intro.html';
data _null_;
infile foo length=len;
input record $varying200. len;
put record $varying200. len;
if _n_=15 then stop;
run;
老夫聊发少年狂

藤椅
论坛数据分析 发表于 2011-1-11 12:21:53
这是一个用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----------*/
老夫聊发少年狂

板凳
liweineng0304 发表于 2014-12-25 22:01:30
第十一行是不是有问题啊,程序运行的始终出错啊,十一行中的@'id="proName_' @'>' content :$50. 啥意思?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 23:34