excel网页数据抓取vba(Python如何用Excel的VBA爬取数据?(一))
优采云 发布时间: 2022-04-18 10:28excel网页数据抓取vba(Python如何用Excel的VBA爬取数据?(一))
网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中,更常被称为网络追逐者)是根据一定规则自动爬取万维网上信息的程序或脚本。其他不太常用的名称是 ant、autoindex、emulator 或 worm。
目前最流行的爬虫方法一般都是通过Python实现的,Python有很多第三方库非常好用。对于不熟悉使用Python的朋友,有没有办法通过Excel VBA来实现呢?
做数据分析,准备工作中很重要的一个环节就是获取数据。数据一般来自多个来源,比如单位数据库中存储的数据、报表中填写的数据、网页上的公开数据等。本文是为了抓取网页上的公开数据。作为一个例子,做一个简单的例子来演示如何使用 Excel 的 VBA 抓取数据。
被测网页:上证所债券信息网
尝试使用Excel获取某个时间范围内的所有记录(信息来自上图红框内的数据表)。
要求:根据日期,获取2018年1月1日至今的债券协议回购市场数据(上表所有数据)。操作方法:
----------------------------------------1、打开EXCEL,新建两个Sheet表1)数据,用于存放获取的结果2)爬取数据,用于存放WebBrowser控件。如图所示:
2、插入控件
方法如图:
开发工具——插入AcitveX控件,找到microsoftWebBrowser控件——拖动。
3、设置控件的属性
跟进您自己的需求并设置空间。此处省略,使用默认值。
4、通过控件实现对网页上日期的分析。我们需要查询一段时间内的数据,所以需要在日期控件中模拟输入日期,然后点击“查询”按钮。查看网页源码找到对应控件的名称和位置:
从上面的截图可以看出,日期控件的id是“searchDate”,输入日期可以通过下面的代码来控制:
1WebBrowser1.Document.All.Item("searchDate").Value = RQ
2
同样的方法,再次查看查询按钮。查询按钮的执行程序为“javascript:goSwitch()”,可以通过以下代码调用:
1WebBrowser1.Document.parentWindow.execScript "javascript:goSwitch()
2
此外,网页上数据表的 id 是“datelist”。
5、代码实现按照上面写VBA代码,代码逻辑如下:使用for循环,在网页上,按照日期填写数据,点击“查询”;等待网页数据刷新,抓取网页上的数据,存储在数组arr中,然后将数组保存到sheet表中。
6、运行程序
运行程序,然后等待一段时间查看爬取的数据。如下所示:
防范措施:
如果对事件效率要求不高或数据量不大且条件有限,可以使用这种方法。(效率低下也是这种方法的缺点之一一)。
对于难以爬取的页面,推荐使用 Python。
/20180905