Node.js 木偶平行刮削

Node.js 木偶平行刮削,node.js,mongodb,web-scraping,parallel-processing,puppeteer,Node.js,Mongodb,Web Scraping,Parallel Processing,Puppeteer,目前我有一些从mongodb获取数组的代码。刮片器在数组中循环,并从网站上刮取数组中的每个值。我的问题是,它目前真的很慢。我怎样才能并行化它,使它同时刮取更多的数据 编辑:下面是一个我想并行化的函数示例: async function scrape(browser, page, i) { //Start new Browser session await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKi

目前我有一些从mongodb获取数组的代码。刮片器在数组中循环,并从网站上刮取数组中的每个值。我的问题是,它目前真的很慢。我怎样才能并行化它,使它同时刮取更多的数据

编辑:下面是一个我想并行化的函数示例:

async function scrape(browser, page, i) {
//Start new Browser session
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await page.goto(dealer);

//Site specific code 
await page.type('.Search-bar-text-input', arrayOfArticles[i]);
await page.click('.Embedded-search-button')
await page.waitFor('.BuyingOptions-total', {timeout: 2000});


price = await page.evaluate(() => {
    price = document.querySelector('.BuyingOptions-total').innerText;
    console.log(price);
    return price;
});

您始终可以使用
子进程
集群
手动执行此操作。或者您可以使用更自动的
节点池

由此:

const cluster=require(“集群”);
const numpus=require(“os”).cpus().length;
const headless=true;
设forks=numpus;//4.
让浏览器;
if(cluster.isMaster){
for(设i=0;i
const cluster = require("cluster");
const numCPUs = require("os").cpus().length;
const headless = true;

let forks = numCPUs; // 4

let browser;

if (cluster.isMaster) {
    for (let i = 0; i < forks; i++) {
        cluster.fork();
        console.log('Fork #' + i);
    }
} else {
    connectToChrome();
}

function connectToChrome()
{
    (async function() {
        let headless = false;
        if (args.headless) {
            headless = true;
        }
        browser = await puppeteer.launch({headless: headless, args: ['--no-sandbox']});
    })();
}