搜索教程

效率神器,如何实现内网系统自动化查询

作者:Excel网络函数库
阅读量: | 发表日期:2024/3/19 0:00:00

摘要:已经快两个月没有写公众号文章了,最近几天也是坐立不安,即便项目再忙,也要写一写。今年,我们将公众号重点定位为“办公自动化服务”,只要您日常工作中用到了电脑处理数据,那么我们提供的这些办公效率神器,总有一款会适合您。

正文:

三月初,有一位粉丝提出一个需求,场景是这样的:“他是高速公路收费站工作人员,每天要拿数百个车牌号到内网系统逐一核查车辆类型,为了提高效率,他们甚至买了专用键盘方便快速复制粘贴,但效果依然有限。

这位粉丝尝试了很多方法,比如学习Python,调研流程自动化RPA工具,也了解到他们其他兄弟单位中有的专门找软件公司开发。最终,考虑到学习成本和开发成本,他找我到希望确认一下表格中写公式是否可实现内网系统自动化查询。

通过对其核查车辆类型步骤的分析,发现内网系统查询是以POST方式进行的,可以通过直接发出POST请求的方式查询,而不需要借助RPA或其他自动化工具进行模拟查询。技术上可行,唯一要做的就是增加POST网页抓取公式,最终,我们在Excel网络函数库内增加了GetWebContentByPostW()公式。

接下来,我将详细介绍这个公式的使用方法,因为内网系统是保密的,所以,这里我们以某物流公司官网的物流查询网页为例子。

步骤1:安装准备

安装Excel网络函数库插件,安装Excel浏览器。

步骤2:找到查询请求

为了找到查询请求,我们需要人工查询一次。通常我们会在网页中,输入运单号,单击查询,然后复制查询结果。

查询前,按F12打开浏览器的开发者工具,打开NetWork选项卡。此时点击查询,发现有很多请求,从中很容易找到querydel请求就是我们要找的请求,因为只有这个请求返回的结果中包括了我们要的数据。

确认请求链接及请求方式,必须是POST方式才可以用POST网页抓取公式。

确认请求链接,发现查询参数是Form Data(表单数据),其中nums参数的值就是要查询的运单号。

步骤3:写公式制作查询模板

如下图所示,我们将网址和查询条件都当成固定文本,然后在其下方,设置了一个表格,第一列是运单号,然后是查询条件、查询结果。这么设计表格,是为了实现批量查询运单号,只要填充好运单号,往下拖动公式就可以批量查询。

其中,拼接查询条件使用到了StringFormat()公式,他可以将包含占位符的字符串进行格式化输出。比如StringFormat ("nums={0}&timeZone=1", "UJ316411656YP",输出的结果是nums=UJ316411656YP &timeZone=1,其中{0}表示占位符,将参数1的内容填进去,支持多个参数。

如下所示,GetWebContentByPostW()公式有三个参数,Url是查询网址,Post_data就是上面拼接的查询数据,Minute是缓存时间,默认是60分钟,这里设置成10分钟。

上图中,POST公式最终返回的是一串32位字符串,表示,查询正常,且查询的字符串数字超过3万个字符,所以就将其存在缓存中了。

步骤4:运行Excel浏览器

首先,要在地址栏输入查询的网址,如果是内网地址,一般需要先登录才能查询。用Excel浏览器的好处就是可以登录系统。

在“网页采集任务”选项卡,右键,可以看到三个按钮,如果需要重新采集或删除任务,可以选中行处理。

当Excel浏览器左下角任务栏出现剩余待处理字样,表示浏览器正在采集。

当出现没有找到待处理任务时,表示Excel浏览器任务处理完成

步骤5,回到Excel表格,提取数据

本例中,由于查询的结果是文本字符串,而且内容很多,所以这里使用了正则表达式公式提取需要的数据。当然,实际的应用中,查询结果可能是Json数据,这样用Json公式提取就更加方便了。

整个步骤看上去有点复杂,但是相对学习Python或者RPA,这个学习成本可以忽略不计。


相关阅读