excel vba 网页数据抓取(P.S.@AJAX数据库实例讲解(有时))
优采云 发布时间: 2022-02-08 22:12excel vba 网页数据抓取(P.S.@AJAX数据库实例讲解(有时))
故事起源
以前有个小网站发表了几篇关于使用SAS抓取网页数据的小文章,然后在人大论坛上放了一个链接。后来因为懒,这个站就挂了,问的人一个接一个。从新获得这篇文章后
其中一个简单易懂,其他译文已由@收录翻译,链接会在文章的最后贴出。
适用性
在以下情况下,可以用同样的方法得到理论。
PS @AJAX 数据库实例 || @AJAX 数据库实例说明
文字前戏
有时候我们经常需要保存和备份一些在线数据,比如银行利率、股票报价,或者来自统计局、各种金融机构或者其他类型的网站的数据。有时这些 网站 提供历史数据,而另一些则不提供。但是我们可以每天通过SAS运行程序,获取积累的历史数据,供以后分析。下面我以收购主页上海银行同业拆借利率为例进行说明。
以下是我们要在首页的数据
当我们打开这个网页并输入网页的源代码时,我们会惊奇地发现。什么情况,主页上看到的数据在源码中找不到,是不是用了其他技术。我们来看看源码代表什么
网页布局。
按照网页的布局,最新Shibor数据的源代码应该放在一大块文字之后,他放了一句话。
这是html内联框架结构,意思是他把数据放到另一个网页上,然后把这个网页嵌入到主页中。好,那我们打开这个页面
并查看源代码,发现该网页中存在数据,然后我们开始用SAS进行抓取。
高潮
首先介绍Filename,通过添加infile语句可以将网页作为文件导入SAS数据集。BaseSAS 中的FILENAME 语句(URL 访问方法)使用户能够从网站访问源代码并将其读入数据集。此语句的语法是:
FILENAME fileref URL 'external-file';
将 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=">" 进行分隔,所以我们知道采集到的观察结果只需要以