利用SAS抓取网页数据总结及案例-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

利用SAS抓取网页数据总结及案例

利用SAS抓取网页数据总结及案例

发布:Still.. | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

获取电子版《CDA一级教材》

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

有时我们常常需要保存备份某些网上的数据,如银行利率,股票行情,抑或统计局、各种金融机构或其他类型网站的数据。有时这些网站会提供历史数据,有的则不会。但是我们可以通过SAS每天跑下程序获取累积历史数据作为后 ...
扫码加入金融交流群


有时我们常常需要保存备份某些网上的数据,如银行利率,股票行情,抑或统计局、各种金融机构或其他类型网站的数据。 有时这些网站会提供历史数据,有的则不会。但是我们可以通过SAS每天跑下程序获取累积历史数据作为后来的分析之用。现在我拿获取 http://www.shibor.org/ 主页,上海银行间同业拆放利率,作为案例进行演示。

以下为主页上我们想要的数据

http://img2081.poco.cn/mypoco/myphoto/20121230/05/17326974720121230053258013.jpg

当我们打开此网页,并进到网页源码中时,我们会惊讶的发现。什么情况,在主页上看到的数据在源码里找不到,难道使用了别的技术。我们大概浏览一下源码所表示的

网页布局。

按网页布局来说,一大坨文字的后面就应该放最新Shibor数据的源码,而他放了一句。

<iframe scrolling="no" src ="/shibor/web/html/shibor.html" width="377" height="473" frameborder="0" name="shibordata"></iframe>

这是html内联框架结构,就是说他把数据放另一个网页上了,然后把这个网页嵌在主页里。好,那我们就打开此网页

http://www.shibor.org/shibor/web/html/shibor.html并查看源码,发现数据就存在此网页中,那我们就开始用SAS抓它一下。

高潮

首先介绍下Filename,利用它加上infile语句就可以把网页当成文件导入SAS数据集。 The FILENAME Statement (URL Access Method) in Base SAS, enables users to access the source code from a web site and read it into a data set. The syntax for this statement is:

FILENAME fileref URL 'external-file'<url-options>;
  • 数据导入

把Shibor数据网页导入SAS数据集。我们知道网页数据是标记语言,服从一定规范,所有属性设置都被<>包含。所以我们利用dlm=">"把它分隔导入到一个变量中, 因为数据太乱,我们没法分清使之导入到不同变量。

FILENAME SOURCE URL "%STR(http://www.shibor.org/shibor/web/html/shibor.html)" DEBUG;DATA Zhaocl01; FORMAT WEBPAGE $1000.; INFILE SOURCE LRECL=32767 DELIMITER=">"; INPUT WEBPAGE $ @@;RUN;
  • 数据清洗

因为我们利用了dlm=">"进行了分隔,所以我们清楚收集到的观测值只要以<开头就说明这条观测只有设置语言,没有我们想要的数据。而我们真正要要的数据肯 定都在<标识符的前面。因为在网页源码中会用 &nbsp代表空格,&amp代表连字符,所以把他们进行替换。

DATA Zhaocl02; SET Zhaocl01; WHERE WEBPAGE LIKE "_%<%"; /**删除以<开头的观测**/ TEXT=SUBSTRN(WEBPAGE,1,FIND(WEBPAGE,"<")-1); /**提取<前面的字符串**/ TEXT=TRANWRD(TEXT,"%NRSTR( )"," "); TEXT=TRANWRD(TEXT,"%NRSTR(&)","&"); IF ANYALPHA(TEXT) + ANYDIGIT(TEXT) LT 1 THEN DELETE;/**保留有效观测**/ KEEP TEXT;RUN;结局
  • 结果展现

拿到了清理后的数据集,打开看下已经很清楚了。我们只要再做下最后简单的加工就好了。注意,由于网页布局的变动这段程序也可能要随之稍加修改。

data Zhaocl03; set Zhaocl02; set Zhaocl02(firstobs=2 rename=(text=next1)); set Zhaocl02(firstobs=3 rename=(text=next2)); if text in ("O/N","1W","2W","1M","3M","6M","9M","1Y"); label text='期限' next1='Shibor(%)' next2='涨跌(BP)'; run;proc print label;run;

http://img2081.poco.cn/mypoco/myphoto/20121230/05/17326974720121230054538087.jpg

其他

正则表达式

在处理网页数据时,有一个利器就是正则表达式,威力巨大。比如:

prxchange("s/<.+?>//",-1,WEBPAGE );

就可以去除所有<>包含的内容。但是一定要在对自己获取数据了解十分透彻的情况下使用,以防遗漏重要信息。

(转)


「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-2916525-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
联系客服
值班时间:工作日(9:00--18:00)