一 组件安装配置和常规错误解决
1 node和npm的安装(最新版本)
wget -qO- https://raw./creationix/nvm/v0.33.2/install.sh | bash
2 查看安装版本
3 给linux加环境配置
yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y
4 切换镜像(防止安装chromium报错)
npm config set puppeteer_download_host=https://storage.googleapis.com.
上面报错可用下面:
npm config set puppeteer_download_host=https://npm./mirror
5 安装puppeteer的npm包(建议新建项目文件夹在项目目录下)
npm i puppeteer --save
6 常见错误及解决(若以上五步没有成功安装可参照一下解决方式)
a 如果直接运行,产生下面错误(网上总结的一些常见错误):
/some/path/root/node_modules/puppeteer/.local-chromium/linux-543305/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
所以我们需要安装依赖包:
sudo yum install google-chrome-stable
如果提示没有这个包,那就需要添加google的源来下载,url替换成镜像的即可,添加文件/etc/yum.repo.d/google-chrome.repo :
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
如果无法下载gpgkey 可以把gpgcheck 的值改为0 再运行一次yum的安装命令即可。
b 尝试运行还会有一个sandbox的错误(linux下回报这个必须要像下面那样加上此段代码),如果你的环境是暴露的,建议按官方教程加上沙盒运行,否则像我这样直接关闭就行,只要在js代码中加上一个no-sandbox 的参数即可。
const browser = await puppeteer.launch({args: ['--no-sandbox']});
c 某些服务器默认字体是不全的,需要手动安装,如果出现类似以下错误就需要装字体:
[0427/123834.275317:FATAL:platform_font_linux.cc(83)] Check failed: InitDefaultFont(). Could not find the default font
安装方法很简单,就用yum 就可以:
yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
二 执行方法和测试用例
测试用例 编辑为.js结尾即可 例如 test.js
//==========TestStart============= const puppeteer = require('puppeteer'); const browser = await puppeteer.launch({ headless: true,//true为无头浏览器 false为有界面 args: ['--no-sandbox', '--disable-setuid-sandbox'], });// 创建浏览器实例 linux上必须要加此项才可运行 const page = await browser.newPage(); // 创建新的浏览器页面 await page.goto('https://'); // 页面访问地址 http:// await page.screenshot({path: 'example.png'}); // 页面截图 example.png await browser.close(); // 关闭浏览器 //==========TestEnd================
执行方法
node test.js
运行成功会在当前目录写截图生成一个名为 example.png的文件
三 搭配node自带的express配合puppeteer搭建提供http接口调用的爬虫服务
代码引入包 由于需要详细叙述 新开一篇博客此篇需要详细叙述
const express = require('express'); const puppeteer = require('puppeteer'); const bodyParser = require('body-parser'); const assert = require('assert'); const request = require("request-promise");
|