Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在新选项卡中打开多个链接,并使用“木偶演员”循环切换焦点?_Javascript_Node.js_Puppeteer - Fatal编程技术网

Javascript 在新选项卡中打开多个链接,并使用“木偶演员”循环切换焦点?

Javascript 在新选项卡中打开多个链接,并使用“木偶演员”循环切换焦点?,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我在一个页面中有多个链接,我想按顺序或一次访问所有链接。我想做的是打开他们各自的新标签页中的所有链接,并获得所有页面的pdf格式的页面。我如何与木偶演员达到同样的效果 我可以使用DOM和href属性获取所有链接,但我不知道如何在新选项卡中打开它们访问它们,然后关闭它们。要打开新选项卡(激活)它,您只需要创建一个 我怀疑您有一个页面数组,因此您可能需要调整上述代码以满足这一需求 至于从多个选项卡生成单个pdf,我非常确定这是不可能的。我怀疑会有一个节点库,可以容纳多个pdf文件并合并成一个 .您可

我在一个页面中有多个链接,我想按顺序或一次访问所有链接。我想做的是打开他们各自的新标签页中的所有链接,并获得所有页面的pdf格式的页面。我如何与木偶演员达到同样的效果

我可以使用DOM和href属性获取所有链接,但我不知道如何在新选项卡中打开它们访问它们,然后关闭它们。

要打开新选项卡(激活)它,您只需要创建一个

我怀疑您有一个页面数组,因此您可能需要调整上述代码以满足这一需求

至于从多个选项卡生成单个pdf,我非常确定这是不可能的。我怀疑会有一个节点库,可以容纳多个pdf文件并合并成一个


.

您可以在循环中打开新页面:

const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const urls = [
      'https://www.google.com',
      'https://www.duckduckgo.com',
      'https://www.bing.com',
    ];
    const pdfs = urls.map(async (url, i) => {
      const page = await browser.newPage();

      console.log(`loading page: ${url}`);
      await page.goto(url, {
        waitUntil: 'networkidle0',
        timeout: 120000,
      });

      console.log(`saving as pdf: ${url}`);
      await page.pdf({
        path: `${i}.pdf`,
        format: 'Letter',
        printBackground: true,
      });

      console.log(`closing page: ${url}`);
      await page.close();
    });

    Promise.all(pdfs).then(() => {
      browser.close();
    });
  } catch (error) {
    console.log(error);
  }
})();

我可以在for循环中使用类似于上面的代码吗,比如:pageHrefs.foreach((ele)=>constpage=await browser.newPage();await page.goto(ele);//do something});
const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const urls = [
      'https://www.google.com',
      'https://www.duckduckgo.com',
      'https://www.bing.com',
    ];
    const pdfs = urls.map(async (url, i) => {
      const page = await browser.newPage();

      console.log(`loading page: ${url}`);
      await page.goto(url, {
        waitUntil: 'networkidle0',
        timeout: 120000,
      });

      console.log(`saving as pdf: ${url}`);
      await page.pdf({
        path: `${i}.pdf`,
        format: 'Letter',
        printBackground: true,
      });

      console.log(`closing page: ${url}`);
      await page.close();
    });

    Promise.all(pdfs).then(() => {
      browser.close();
    });
  } catch (error) {
    console.log(error);
  }
})();