Puppeteer安装采坑

如果只是使用 npm i puppeteer 来做安装,应该会一步到位。奈何因为墙的关系,不得不把一个自动化的东西给拆解了,理解其中每一步的细节,具体解决每一个细小的问题。

首先安装 nodejsnpm ,国内的可以通过安装 cnpm 来加快速度。

接下来,按照习惯应该是通过 npm i puppeteer 来安装 puppeteer 。但,坑出现了,你会得到错误提示:
在这里插入图片描述

或者

ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOA
D" env variable to skip download.

执行 node install.js 失败。为什么会失败呢?因为这个文件里做了一个重要的工作,就是下载Chromium,去官方下载。。。于是你懂的,伟大的墙让它自然失败了。

于是一个解决办法是忽略这个脚本的执行:npm i --save puppeteer --ignore-scripts 。由于这里忽略了 Chromium 的下载,自然在后面的时候,你需要回来补上这个锅。

新建 example.js 这个文件,

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});

  await browser.close();
})();

直接执行 node example.js ,执行下载。此时,可能会出现如下错误:

(node:8672) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejec
tion id: 1): AssertionError [ERR_ASSERTION]: Chromium revision is not downloaded
. Run "npm install"
(node:8672) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
 Node.js process with a non-zero exit code.

即是Chromium没有被下载,无法执行。

从官网 https://download-chromium.appspot.com/ 进行下载(或者下载taobao镜像https://npm.taobao.org/mirrors/chromium-browser-snapshots/linux_x64/),选择好你的服务器操作系统版本。下载时,注意Chromium的版本号:
在这里插入图片描述

解压后,放在 <proj_dir>/node_modules/puppeteer/ 。将上述 example.js 文件加上执行路径:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '<proj_dir>/node_modules/puppeteer/chrome-linux/chrome',
  });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});

  await browser.close();
})();

修改 <proj_dir>/node_modules/puppeteer/package.json 文件,修改 Chromium 的版本号:
在这里插入图片描述
此时再执行 node example.js 应该会成功。

如果截图成功,但是却发现截图中充满了各种方块的中文乱码,那是因为 Chromium-browser 无法渲染出中文字体,需要安装系统字体:

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值