在环境搭建章节介绍了如何使用puppeteer模块来启动Chromium实例,本篇开始puppeteer的API详细学习计划
本文将主要介绍:
puppeteer模块API
▷1◁
1、launch([options])
options列表详解
options <[Object]> 在浏览器上设置的一组可配置选项。 有以下字段:
那么在脚本中如何使用这些options呢?请看实例:
//初始化puppeteer变量 const puppeteer = require('puppeteer'); //调用puppeteer模块的launch方法 //luanch的options参数类型是一个object,js中的object定义使用{xxx,xxx,xxxx}的方式 puppeteer.launch( { ignoreHTTPSErrors:false, headless:false, executablePath: 'D:\\node_modules\\puppeteer\\.local-chromium\\win64-579032\\chrome-win32\\chrome.exe', headless: true, //计量单位:ms slowMo:300, //defaultViewport参数类型为object,默认是 800x600,null为禁用窗口 defaultViewport: { width:1000, height:1000, deviceScaleFactor:1, isMobile:false, hasTouch:false, isLandscape:false }, args:new Array("--accept-resource-provider","--agc-startup-min-volume","--/prefetch:1"), ignoreDefaultArgs:false, handleSIGINT:true, handleSIGTERM:true, handleSIGHUP:true, //计量单位ms timeout:60000, dumpio:false, userDataDir:"D:\\puppeteer\\data", env:{}, devtools:false, pipe:false } ).then(async browser => { const page = await browser.newPage(); await page.goto('https://example.com'); await browser.close(); });
注意几个重要参数的配置:
具体的参数参考地址:https://peter.sh/experiments/chromium-command-line-switches/
▷2◁
2、connect
connect(options)
options <[Object]>
具体使用情况请看实例:
const puppeteer = require('puppeteer'); puppeteer.launch({ executablePath: 'D:\\node_modules\\puppeteer\\.local-chromium\\win64-579032\\chrome-win32\\chrome.exe', headless: false}).then(async browser => { const page1 = await browser.newPage(); await page1.goto('https://www.baidu.com'); await page1.screenshot({path: '../img/baidu800.png'}); // 存储节点以便能重新连接到 Chromium const browserWebSocketEp = browser.wsEndpoint(); // 从 Chromium 断开和 puppeteer 的连接 browser.disconnect(); // 使用节点来重新建立连接 const browser2 = await puppeteer.connect( { browserWSEndpoint:browserWebSocketEp, ignoreHTTPSErrors:false, defaultViewport:{ width:1500, height:1000, deviceScaleFactor:1, isMobile:false, hasTouch:false, isLandscape:false }, slowMo:1000 } ); const page2 = await browser2.newPage(); await page2.goto('https://example.com'); await page2.screenshot({path: '../img/example1500.png'}); // 关闭 Chromium await browser2.close(); });
配置websocket连接,使用puppeteer.connect重新连接
重新连接后可以重新定义page窗口大小和速度,可以通过
两个page窗口的截图比较
▷3◁
3、executablePath()
环境初始化中已经详细描述过
▷4◁
4、defaultArgs([options])
跟launch中的配置重复,不再重复分析
5、createBrowserFetcher([options])
options <[Object]>
使用实例:
const puppeteer = require('puppeteer'); const BrowserFetcher = puppeteer.createBrowserFetcher( { host:"https://storage.googleapis.com", path:"D:\\node_modules\\puppeteer\\.local-chromium", platform:"mac" });
主要用于管理chromium下载,在BrowserFetcher 模块详解中再详细介绍。