月子里面除了奶奶娃,其他啥事没干,老公提了一个需求:银行每个季度需要检查开户的企业运营情况,对于一些异常情况,比如严重违法失信,注销等情况,需要及时进行记录和汇报。之前每次他都是每个公司每个公司copy-paste去网站上查询,看了公司经营情况,完了截图,记录失信情况,非常机械,也非常繁琐。希望我这个老码农可以早日帮他脱离苦海。
5月13号,我结束了我的产假生活,正式开始上班。因为在外企,刚开始去上班,正值上一个PI末尾,下一个PI还没开始,老板没有派活,我就寻思着,那就把这个需求做了吧,也就几十行代码的事情。
第一步,先弄清楚了需求——
输入 - 公司名称的excel文件;
输出 - 各个公司运营情况截图,股权穿透图截图,失信细节(比如是注销啊,还是严重违法啊之类的)
查询网站 - XXX
第二步,写需求文档 ——
呸,由于是无任何报酬的甲方需求,乙方决定除了必要的代码外,不搞任何形式主义。
第三步,码代码 ——
因为本身我是前端工程师,所以就用了nodejs来做了。提一下码代码当中遇到的问题:
- 读excel文件
const readXlsxFile = require('read-excel-file/node');
- 模拟浏览器操作
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
...
const page = await browser.newPage();
- excel输出
本来想把每个企业,以及对应查询结果做成excel输出,但是发现nodejs输出中文字符就变成乱码了。后来找到一种方案:
var fs = require('fs');
var writeStream = fs.createWriteStream('result.xls');
var header=`\ufeff` + `${'户名'}`+'\t'+`&状态`+ '\n';
writeStream.write(header);
也就是加上\ufeff
,虽然解决了乱码问题,但是不知为什么,户名
和状态
本来是两列,但是输出却变成了一列:
这个我暂时没找到解决方案,最终决定还是控制台输出吧,自己需要自己拷贝一下。。。。。看到这里的大侠们,如果遇到这个坑并且跳出来的,记得留言赐教一下。
第四步,测试 ——
不测不知道,一测吓一跳:
-
网站不登陆情况下,只能查X个企业信息,然后就需要登录才能查询了。登陆的时候是滑动块设计,有时还涉及到图片识别,不太好用代码实现自动登录;
这个简单,直接手动先登录,然后再开始查询,虽然不那么智能,但是管用。。。。 -
同时并发查询700家企业,账号提示操作过于频繁,被锁
囧,这个也简单,延时发送,虽然会增加总的查询时间,但是自动地总比看瞎眼去查要好。 -
企业更新名称后查询不到
截图之前只分成两类,一是经营良好的企业,二是有问题的企业,现在加上新的一类,也就是查询不到的企业。
目前就遇到了这几个问题,由于整个代码还没有投入使用(6月份才会使用),所以测试完成之后就暂停更新了。
简单的一个几十行小程序,算是我产假结束正式上班前的小练手吧。
嗯,江湖再见。
网友评论