gpt4 book ai didi

javascript - 如何处理 puppeteer-cluster[CONCURRENCY_BROWSER] 中的多个选项卡?

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:53 26 4
gpt4 key购买 nike

我正在尝试抓取具有以下条件的 3 个网址

  1. 每个网址都需要在单独的浏览器中运行。

  2. 网址可能包含 2 个或更多要点击的链接

  3. 在相应浏览器的新选项卡中打开链接(并行)并切换到该选项卡并抓取内容。

换句话说,我试图在浏览器中打开一个网址,获取页面中的链接,根据同一浏览器中获取的链接数量打开新选项卡,切换选项卡,单击其中的按钮并获取确认消息。

我还需要并行运行 3 个网址。

我已尝试使用 CONCURRENCY_BROWSER 选项并行运行 URL,但无法在新选项卡中打开链接。有关如何操作 puppeteer-cluster 中的选项卡的任何建议

我需要的是:

async function test(){
const cluster = await Cluster.launch({
puppeteerOptions: {
headless: false,
defaultViewport: null,
},

concurrency: Cluster.CONCURRENCY_BROWSER,
maxConcurrency: 5,
skipDuplicateUrls : true,
timeout : 240000,
});

// initiate the cluster task for a set of urls from the cluster queue;

await page.goto(url);

// on visiting the page i retrieve 2 or more links and store it in a array

let linksArray = [...subUrl];

//load suburl in a new tab respectively of the same browser

await cluster.newPage()

//screenshot suburl

await page.screenshot(suburl)

}

类型错误:cluster.newPage 不是函数

在 puppeteer 中,我曾经使用命令打开一个新选项卡等待 browser.newPage()

最佳答案

这里是puppeteer-cluster的作者。重复使用同一个浏览器并不容易。但是,您可以定义一个任务,其中包含多个 page.goto 调用,如下所示:

const cluster = await Cluster.launch(/* ... */);

// define the task and reuse the window
await cluster.task(async ({ page, data: url }) => {
await page.goto(url);
const secondUrl = /* ... */; // extract another URL somehow
await page.goto(secondUrl);
await page.screenshot(/* ... */);
});

// queue your initial links
cluster.queue('http://...');
cluster.queue('http://...');
// ...

关于javascript - 如何处理 puppeteer-cluster[CONCURRENCY_BROWSER] 中的多个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57222535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com