写在开始:
本节主要是为了在新机器上部署爬虫任务,用到了node和puppeteer,将整个流程列下来以做记录。
参考链接:
小白安装nodejs,centos安装puppeteer爬坑
第一部分:安装nodejs
1. 获取nodejs
nodejs官网下载地址
如果是远程机器,终端执行下语句(后不赘述),选择最新的版本可自行替换链接
wget -c https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
2.解压
tar -xvf node-v10.16.3-linux-x64.tar.xz
3. 移动文件夹
将文件夹移动到用户目录下,并重命名为node(通常该步骤是便于应用程序使用)
mv node-v10.16.3-linux-x64 ~/node
4. 建立软连接
相当于分别为node和npm添加环境变量
sudo ln -s ~/node/bin/node /usr/local/bin/node
sudo ln -s ~/node/bin/npm /usr/local/bin/npm
5.添加环境变量
和上步略有重复,不过建议加上
sudo vim /etc/profile;
//特别提醒:如果前文移动目录自定义,这里也要同步修改
//打开vim配置文件,vim简单用法自查,在最后加上如下两行:
//export NODE_HOME=~/node/bin
//export PATH=$NODE_HOME:$PATH
6.自测
node -v
//打印版本号说明安装成功
至此,安装nodejs部分完成,Congratulations。
第二部分:安装puppeteer
写在最开始,node对于路径很看重,因此把模块安装在哪个目录下很关键,否则你的js文件可能因为缺少模块而不能运行
如果完成上述node安装,你的node所在路径应该是~/node,之后的包安装都在~/node下进行
1.安装
执行下列语句后,如果该目录下出现node_modules,说明安装成功
//确保进入node文件夹下
cd ~/node
//安装puppeteer,不下载chrome
npm install puppeteer --ignore-scripts --save
2.获取chrome
查看所需chrome版本号:版本号可以在node_modules/puppeteer/package.json
中puppeteer.chromium_revision
获得,现在是686378(2019.9.25),根据puppeteer需要自行替换,后续用%d代替(必须,否则puppeteer特性可能不支持)
wget -c 'https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/686378/chrome-linux.zip'
3.将chrome放在指定目录下
cd node_modules/puppeteer/
// .不能少
mkdir .local-chromium
cd .local-chromium
// 686378:%d 根据自己的替换
mkdir linux-686378
cd linux-686378
// 如果上述按照步骤来走,移动文件夹,否则,自行替换路径
mv ~/node/chrome-linux.zip ~/node/node_modules/puppeteer/.local-chromium/linux-686378/chrome-linux.zip
//解压
unzip chrome-linux.zip
4.安装依赖(不可忽略)
#依赖库
sudo 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 nss.x86_64 -y
#字体
sudo 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
5.自测
cd ~/node
// 建立文件,此后要跑的js建议都放在这里
vim test.js
test.js内容如下
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
const page = await browser.newPage();
await page.goto('https://www.baidu.com');
await page.screenshot({path: 'author3q.png'});
await browser.close();
})();
在该目录下运行:
node test.js
如果目录下有author3q.png,说明一切就绪,Congratulations!
-----------------------
梦想着做一个游戏开发者,绕来绕去又成为服务器开发了,世事难料,诸君共勉