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

63次阅读

共计 1160 个字符,预计需要花费 3 分钟才能阅读完成。

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

  • node.js 子过程的创立:node.js:child_process(官网文档)
  • fork 和 spawn 的区别与分割
  • Ipc 实现过程间通信
  • WebSocket 实现过程间通信

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}`)

执行后果:

留神:这里应用 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 的谬误。
(未完)

正文完
 0