excelvba抓取网页数据(使用Excel自带的PowerQuery获取网页表格数据(图))
优采云 发布时间: 2022-02-19 22:03excelvba抓取网页数据(使用Excel自带的PowerQuery获取网页表格数据(图))
推荐阅读:SEO干货网站内链优化与网站优化>>推荐阅读:企业公众号运营全稿>>
VBA抢网的想法最初是因为我想在股票交易中更快地获取信息,又不想购买昂贵的经纪软件。后来调查发现Python其实是最著名的爬虫制作工具,但是需要安装环境,而且只能在自己的电脑上使用。抓牢。
(一)使用 Excel 自带的 Power Query 获取 web 表单
如果一种方法解决了现有的需求,老实说,我没有动力去寻找第二种方法。在使用VBA网页抓取之前,我已经开始使用Excel的Poewr Query做股票信息分析。我首先使用Power Query的“新建查询”功能从网页获取表格数据(具体方法请参考:/tech/2021 -05-06/doc-ikmyaawc3588981.shtml),可以直接更新到 Excel 表。当时选择的数据源是中国财经网的数据引擎(/cfidata.aspx)。不得不说,这个网站对于使用Excel自动获取web数据源来说真的很友好,因为都是可识别的表格数据。. 这是更新 Excel 后的样子。之后,您可以快速清洁,
但是后来发现这种方法的局限性,就是对数据源要求太高了。很多网站表格数据不能以Excel导入的网站数据源的形式识别,我想股票或者期货的历史数据不收录在这个网站里面。并且爬虫数据分析的Power Query方式,不支持WPS。就这样,我终于放弃了这个想法,开始探索真正的VBA网络捕获实现方法。
(二)Excel VBA实现期货行情获取及历史数据下载
第一步是选择数据源。如果使用 Python 网页抓取,其实数据源很容易找到。许多在线界面都对 Python 开放。开发者甚至不需要寻找源网页,就可以直接使用各种接口提供的*敏*感*词*融期货交易所)的官网获取数据。这些网站提供下载链接和一键下载功能。然而,在对html请求和响应的后续分析中,最让我这个强迫症患者无法接受的情况发生了。四个交换中,三个可以被抓到,一个不能被反爬虫抓到。. . 这样,我们只好找其他接口,不行,我不能接受!后来发现,新浪界面真是个宝。所有四个交易所都包括在内。如果好,我决定分析这个网页,然后爬取。它成功了!附上新浪界面链接(这个网页需要自己分析,
实时报价:.cn/quotes_service/view/qihuohangqing.html#titlePos_1
历史数据:.cn/q/view/vFutures_History.php?jys=czce&pz=AP&hy=AP0&breed=AP0&type=inner&start=2021-11-23&end=2021-12-23
第二步是实现代码。VBA爬网入门可以参考B站UP主发布的免费教程(链接/视频/BV1uJ411t7hY/)。这次抢期货的时候,先分析了新浪财经的网页,发现这个界面并不复杂,可以直接用Winhttp请求,然后用正则表达式处理返回的数据。核心代码如下:
发送请求部分
正则表达式匹配并写入数组部分
需要注意的是,在更新产品市场时,产品名称是通过unicode码返回的,所以需要额外转换成汉字。在这一部分中,编写了一个自定义函数。代码如下:
网页抓取部分要注意的另一点是返回的json格式数据的处理。其实VBA可以参考脚本组件实现快速便捷的json数据解析,参考此类组件解析json,自动将unicode转成汉字。但是在这种方法的测试中,wps运行正常,但是有的excel会报错,说是429错误爬虫数据分析缺少ActiveX控件,不好解决。一般这种错误不是excel版本引起的,大概率是没有完整安装,或者wps和office同时安装导致部分系统组件注册失败。这种错误不能通过修改代码来解决(除非代码逻辑改了,其余的组件都没有调用),是系统问题,比如注册表键损坏,操作系统文件被删除,excel不完整安装完毕,系统文件损坏等等。所以最后为了增加兼容性,避免出现此类错误,重新修改了代码,不再使用脚本组件解析json,而是使用了正则表达式。
抓网后,简单写一些数据处理函数公式,设计两种存储方式(保存到当前工作簿,或者新建工作簿),这样软件功能就完成了。在计算日期时,excel自带的工作日功能非常有用。
第三步是交互形式。最后,设计了数据输入的交互表单。代码主要使用输入框方法。核心代码和接口如下:
目前我已经在我的网盘中共享了这个软件,后续更新(如果网络爬不上)版本也会在同一个网盘链接上共享。不过,我一直在努力开发一个软件,我仍然希望能得到一些支持。您可以试试T a B宝搜索“ExcelVBA期货市场历史数据下载器自动计算所有交易所产品的当期期差”。
类似获取股票信息的教程,可以参考我的另一篇文章文章/p/442447962
或T a B宝搜索“股票信息下载软件历史股价分红财务报表自动更新Excel网络爬虫VBA”。