美文网首页
被白嫖的爬虫需求

被白嫖的爬虫需求

作者: 肉桂猿 | 来源:发表于2021-05-18 15:03 被阅读0次

    月子里面除了奶奶娃,其他啥事没干,老公提了一个需求:银行每个季度需要检查开户的企业运营情况,对于一些异常情况,比如严重违法失信,注销等情况,需要及时进行记录和汇报。之前每次他都是每个公司每个公司copy-paste去网站上查询,看了公司经营情况,完了截图,记录失信情况,非常机械,也非常繁琐。希望我这个老码农可以早日帮他脱离苦海。

    5月13号,我结束了我的产假生活,正式开始上班。因为在外企,刚开始去上班,正值上一个PI末尾,下一个PI还没开始,老板没有派活,我就寻思着,那就把这个需求做了吧,也就几十行代码的事情。

    第一步,先弄清楚了需求——
    输入 - 公司名称的excel文件;
    输出 - 各个公司运营情况截图,股权穿透图截图,失信细节(比如是注销啊,还是严重违法啊之类的)
    查询网站 - XXX

    第二步,写需求文档 ——
    呸,由于是无任何报酬的甲方需求,乙方决定除了必要的代码外,不搞任何形式主义。

    第三步,码代码 ——
    因为本身我是前端工程师,所以就用了nodejs来做了。提一下码代码当中遇到的问题:

    1. 读excel文件
    const readXlsxFile = require('read-excel-file/node');
    
    1. 模拟浏览器操作
    const puppeteer = require('puppeteer');
    const browser = await puppeteer.launch({
    ...
    const page = await browser.newPage();
    
    
    1. excel输出
      本来想把每个企业,以及对应查询结果做成excel输出,但是发现nodejs输出中文字符就变成乱码了。后来找到一种方案:
     var fs = require('fs');
     var writeStream = fs.createWriteStream('result.xls');
     var header=`\ufeff` + `${'户名'}`+'\t'+`&状态`+ '\n';
     writeStream.write(header);
    

    也就是加上\ufeff ,虽然解决了乱码问题,但是不知为什么,户名状态本来是两列,但是输出却变成了一列:

    image.png
    这个我暂时没找到解决方案,最终决定还是控制台输出吧,自己需要自己拷贝一下。。。。。看到这里的大侠们,如果遇到这个坑并且跳出来的,记得留言赐教一下。

    第四步,测试 ——
    不测不知道,一测吓一跳:

    1. 网站不登陆情况下,只能查X个企业信息,然后就需要登录才能查询了。登陆的时候是滑动块设计,有时还涉及到图片识别,不太好用代码实现自动登录;
      这个简单,直接手动先登录,然后再开始查询,虽然不那么智能,但是管用。。。。

    2. 同时并发查询700家企业,账号提示操作过于频繁,被锁
      囧,这个也简单,延时发送,虽然会增加总的查询时间,但是自动地总比看瞎眼去查要好。

    3. 企业更新名称后查询不到
      截图之前只分成两类,一是经营良好的企业,二是有问题的企业,现在加上新的一类,也就是查询不到的企业。

    目前就遇到了这几个问题,由于整个代码还没有投入使用(6月份才会使用),所以测试完成之后就暂停更新了。

    简单的一个几十行小程序,算是我产假结束正式上班前的小练手吧。

    嗯,江湖再见。

    相关文章

      网友评论

          本文标题:被白嫖的爬虫需求

          本文链接:https://www.haomeiwen.com/subject/cxzejltx.html