zoukankan      html  css  js  c++  java
  • Puppeteer--创建实例

    puppeteer 提供了两种方法用于创建一个 Browser 实例:
    • puppeteer.connect: 连接一个已经存在的 Chrome 实例
    • puppeteer.launch: 每次都启动一个 Chrome 实例
    方式一:使用 puppeteer.launch 启动一个 Chrome 实例
    const puppeteer = require('puppeteer');
    let request = require('request-promise-native');
    
    //使用 puppeteer.launch 启动 Chrome
    (async () => {
        const browser = await puppeteer.launch({
            headless: false,     //有浏览器界面启动
            slowMo: 100,       //放慢浏览器执行速度,方便测试观察
            args: [                //启动 Chrome 的参数
                '–no-sandbox',
                '--window-size=1280,960'
            ],
        });
        const page = await browser.newPage();
        await page.goto('https://www.baidu.com');
        await page.close();
        await browser.close();
    })();
     
    方式二:使用 puppeteer.connect 连接一个已经存在的 Chrome 实例
    (async () => {
        //通过 9222 端口的 http 接口获取对应的 websocketUrl
        let version = await request({
            uri:  "http://127.0.0.1:9222/json/version",
            json: true
        });
        //直接连接已经存在的 Chrome
        let browser = await puppeteer.connect({
            browserWSEndpoint: version.webSocketDebuggerUrl
        });
        const page = await browser.newPage();
        await page.goto('https://www.baidu.com');
        await page.close();
        await browser.disconnect();
    })();
     
    这两种方式的对比:
    • puppeteer.launch 每次都要重新启动一个 Chrome 进程,启动平均耗时 100 到 150 ms,性能欠佳
    • puppeteer.connect 可以实现对于同一个 Chrome 实例的共用,减少启动关闭浏览器的时间消耗
    • puppeteer.launch 启动时参数可以动态修改,而puppeteer.connect 不可以
    • 通过 puppeteer.connect 我们可以远程连接一个 Chrome 实例,部署在不同的机器上
    • puppeteer.connect 多个页面共用一个 chrome 实例,偶尔会出现 Page Crash 现象,需要进行并发控制,并定时重启 Chrome 实例

  • 相关阅读:
    流式布局
    发送短信验证码 倒计时
    jQuery-qrcode.js 生成带Logo 的二维码
    bootstrap-daterangepicker插件运用
    html 转 pdf
    input placeholder 在chrome 浏览器自动填充时,背景色覆盖原有背景图片问题。
    jQuery.qrcode 生成二维码,并使用 jszip、FileSaver 下载 zip 压缩包至本地。
    java学习之super、final、static关键字及匿名对象
    java学习之数组
    java学习之循环语句
  • 原文地址:https://www.cnblogs.com/absoluteli/p/14295328.html
Copyright © 2011-2022 走看看