【问题标题】:How to take screenshots for multiple pages automatically using Puppeteer如何使用 Puppeteer 自动截取多个页面的屏幕截图
【发布时间】:2019-06-20 01:42:00
【问题描述】:

我在文本文件中有一个 URL 列表。我想通过使用 Puppeteer 从文本文件中读取每个 URL 来自动获取每个页面的屏幕截图。

const puppeteer = require('puppeteer');
async function doScreenCapture(url, site_name) {
    let browser = await puppeteer.launch({ headless: false });
    let page = await browser.newPage();
    await page.goto(url);
    await page.setViewport({width: 1382, height: 717})
    await page.waitFor(1000);
    console.log('do screen capture running');
    await page.screenshot({ path:`${site_name}.png`, fullPage: true });
    await page.close();
    await browser.close();
  }
async function run() {
    console.log('running');
    var fs = require("fs");
    var text = fs.readFileSync("linksList.txt").toString().split("\n");

    for (var i = 0; i < text.length; ++i) {
            doScreenCapture(text[i], "image"+i)
            console.log("image"+i+" completed");
            await page.waitFor(5000);
        }
 }

run();

这是我在运行代码时遇到的错误

(node:77868) UnhandledPromiseRejectionWarning: ReferenceError: page is not defined 在运行 在对象。 在 Module._compile (module.js:653:30) 在 Object.Module._extensions..js (module.js:664:10) 在 Module.load (module.js:566:32) 在 tryModuleLoad (module.js:506:12) 在 Function.Module._load (module.js:498:3) 在 Function.Module.runMain (module.js:694:10) 启动时(bootstrap_node.js:204:16) 在 bootstrap_node.js:625:3 (节点:77868)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:77868)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。 运行屏幕截图。

【问题讨论】:

  • page 不在您的 for 循环范围内,这可能是问题所在。

标签: javascript node.js web-scraping screenshot puppeteer


【解决方案1】:

我在这里看到两个问题:

  • page 不存在于“for”循环中,仅存在于“run”函数中,这会给您带来异常。你可以移动到等待函数

  • “doScreenCapture”是一个异步函数,您应该使用await doScreenCapture 以便连续打开页面,而不是一次打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多