在puppeteer中使用node.js创建子进程并使用WebSocket和Ipc实现进程间通信,从而实现数据的快速爬取

笔者近几月某公司WiFi测试平台项目中,了解到他们测试WiFi一直是人工手动测试,因此在老师提议下,决定采用puppeteer去实现页面数据的爬取和更改的自动化,在实施过程中,发现--路由管理页面--登陆后只有cookie加密,并且页面的数据和操作通过向同一接口传递不同参数实现,因此可以通过promise-request方法快速的实现上述功能。
本文主要记录、总结:


1. node.js子进程的创建

node创建子进程的方法可以参考上述官方文档,里面有详细的配置和说明。在本文中,笔者着重介绍笔者使用到的child_process.spawn()方法和child_process.fork()方法。
Master进程代码:

const child_process = require('child_process');//引入child_process模块
const {recLog} = require("./utils/log");//由于执行父进程,子进程无法在控制台打印信息,因此封装了log4js方法。

const gChildProcessNumber = 3;//创建子进程数量-全局
creatProcess();

async function creatProcess() {
  for (let i = 0; i < gChildProcessNumber; i += 1) {
    const workerProcess = child_process.spawn('node', ['./Request_Test/ChildProcess.js']);
  }
}

Child进程代码:

const {recLog} = require("./utils/log");
recLog(`子进程创建成功,执行ChildProcess.js文件,进程pid为:${process.pid}`)

执行结果:
image.png
注意:这里使用child_process.spawn()方法,由于笔者子进程运行的文件为js文件,因此直接用node运行,如果运行的是其他文件,比如笔者之前运行的×××.e2e.js文件时,笔者运行指令为npm test ×××.e2e.js,就需要写成如下:

  const workerProcess = child_process.spawn('npm.cmd', ['test', './Request_Test/request.e2e.js'], {
    });

因为在Windows上,当我们执行npm 时,我们实际执行的是npm. cnd批处理,所以一定要显示的执行npm.cmd否则会出现Error: spawn npm ENOENT的错误。
(未完)

你可能感兴趣的:(在puppeteer中使用node.js创建子进程并使用WebSocket和Ipc实现进程间通信,从而实现数据的快速爬取)