excel网页数据抓取vba(Python如何用Excel的VBA爬取数据?(一))

优采云 发布时间: 2022-04-18 10:28

  excel网页数据抓取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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线