Puppeteer 介绍
Puppeteer
翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人。 Puppeteer
是一个 Nodejs
的库,支持调用 Chrome的API来操纵Web
,相比较 Selenium
或是 PhantomJs
,它最大的特点就是它的操作 Dom
可以完全在内存中进行模拟既在 V8
引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。
Puppeteer
用处
Puppeteer 使用
安装 Puppeteer
由于封网,直接下载 Chromium
会失败,可以先阻止下载 Chromium
然后再手动下载它
# 安装命令npm i puppeteer --save# 错误信息ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.# 设置环境变量跳过下载 Chromiumset PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 # 或者可以这样干,只下载模块而不buildnpm i --save puppeteer --ignore-scripts# 成功安装模块+ puppeteer@0.13.0added 1 package in 1.77s
手动下载 Chromium,下载完后将压缩包解压,会有个 Chromium.app,将其放在你喜欢的目录下,例如 /Users/huqiyang/Documents/project/z/chromium/Chromium.app
。正常安装包后 Chromium.app 会在 .local-chromium
中
Tip:下载 Chromium 失败解决办法
更换国内Chromium源
PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.orgnpm i puppeteer
或者用 cnpm 安装
npm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm i puppeteer
点击查阅 Puppeteer API
初试 Puppeteer,截个图吧
知识点
puppeteer.launch 启动浏览器实例 browser.newPage() 创建一个新页面 page.goto 进入指定网页 page.screenshot 截图const puppeteer = require('puppeteer');(async () => { const browser = await (puppeteer.launch({ // 若是手动下载的chromium需要指定chromium地址, 默认引用地址为 /项目目录/node_modules/puppeteer/.local-chromium/ executablePath: '/Users/huqiyang/Documents/project/z/chromium/Chromium.app/Contents/MacOS/Chromium', //设置超时时间 timeout: 15000, //如果是访问https页面 此属性会忽略https错误 ignoreHTTPSErrors: true, // 打开开发者工具, 当此值为true时, headless总为false devtools: false, // 关闭headless模式, 不会打开浏览器 headless: false })); const page = await browser.newPage(); await page.goto('https://www.jianshu.com/u/40909ea33e50'); await page.screenshot({ path: 'jianshu.png', type: 'png', // quality: 100, 只对jpg有效 fullPage: true, // 指定区域截图,clip和fullPage两者只能设置一个 // clip: { // x: 0, // y: 0, // width: 1000, // height: 40 // } }); browser.close();})();
新闻热点
疑难解答
图片精选