ESAP达摩院 思想有多远,我们就能走多远

ESAP高级教程|登陆抓取web订单(一)


在供应链中,大客户会给上游供应商提供一些web系统,用于接收打印新的订单、入库单等。

通常,供应商需要用客户提供的账号密码登陆这些系统,下载订单,再录入到自己的ERP系统中。

本文介绍一种自动登陆抓取WEB订单的解决方案。

解析客户web系统

先让我们来探索一下这个客户的web订单打印系统。

首先,用chrome浏览器访问客户web系统登陆页面,按F12打开开发工具。

接下来,输入账号密码登陆,登陆后,查询一下订单,然后逐个查看右侧列表的历史请求。

我们可以发现浏览器首先把账号密码POST到Login.aspx,进行登陆。

然后下载了一大堆静态资源(css/js/png等等),这些可以跳过不看,最后发现一个api数据请求CRUDhandler.ashx,这个POST请求的请求表单包含一系列参数。

点击Preview标签,展开返回的json,可以发现原来数据都在这个rows数组里,包含了大量订单信息。

好了,到这里我们大概明白了这个web系统的原理:先post账号密码到Login.aspx获取cookie,再post供应商号等到CRUDHandler.ashx获取订单信息。

注册模拟登陆和数据抓取接口

以NX为例,首先在外部接口中注册一下这个网站及下面的接口。

其中Login.aspx这个登陆接口主要传入账号密码(txtusername,txtpassword),传出随便填一个文本字段,比如test(实际没传出,但后面提数时必填,所以随便弄一个)

另一个CRUDHandler.ashx数据接口有一堆传入参数,一个不落都设置好。

传出表结构也有一堆字段,这些字段根据实际真实订单一一对应填好备注,便于识别使用。

设置模板提数公式

在订单导入模板中加两个提数,设置通过API提取

第一个叫q登陆,使用登陆接口,传入绑定字段填入账号密码,返回字段随便找个绑定test,不然不给保存ORZ……

第二个叫q数据,使用数据接口,传入绑定字段填入浏览器请求中使用的内容,返回的rows表结构填充给本模板明细表。

最后做个抓订单按钮,执行这两个提数公式。

效果

改进前:我们需要登陆客户的网站,设置查询参数,点击查询按钮查询订单列表,挑选新订单,导出订单,再录入到自己的ERP系统。

改进后:直接登陆自己的ERP系统,一键自动登陆+抓取+存入。

小结

  • 使用chrome分析客户web系统的请求过程。

  • 使用api提数模拟登陆请求和数据请求。

  • 使用按钮执行api提数。

2019-08-15


近似文章