Linux-Centos安裝puppeteer(避免所有的坑)
之前已經(jīng)講過如何安裝nodejs寒屯,點(diǎn)擊鏈接進(jìn)行查看
Linux-Centos安裝NodeJs
1、首先使用cd命令切到項(xiàng)目所在目錄(隨意)(一定要使用root角色)
2踢故、執(zhí)行
mkdir puppeteerproject
創(chuàng)建項(xiàng)目文件夾
3、直接輸入(不下載瀏覽器)以下指令安裝puppeteer
npm i puppeteer@18.0.3 --ignore-scripts
4过咬、進(jìn)入puppeteer安裝目錄(node安裝目錄/bin下的node_modules)
cd node_modules
cd puppeteer
5壳猜、打開package.json文件查看puppeteer所對應(yīng)的瀏覽器版本號(hào)
(1)打開文件
vi package.json
(2)使用鍵盤方向鍵查找puppeteer參數(shù)的位置
(3)記錄下chromium_revision的版本號(hào)
https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip
將上鏈接地址中的%d替換成具體的版本號(hào),例如上圖所示的版本號(hào)
https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/756035/chrome-linux.zip
(4)在當(dāng)前目錄下谷誓,下載對應(yīng)版本號(hào)的谷歌瀏覽器
wget https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/756035/chrome-linux.zip
(5)解壓壓縮包到當(dāng)前目錄下(也可解壓到自定義目錄),并且不會(huì)覆蓋已有文件
unzip -n chrome-linux.zip
若提示bash: unzip: command not found吨凑,則先運(yùn)行下面代碼捍歪,之后再執(zhí)行即可
yum install -y unzip zip
6、安裝兩個(gè)必須依賴
依賴
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
字體
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
7鸵钝、js文件編寫(###重中之重)
使用vi t.js創(chuàng)建一個(gè)node執(zhí)行文件
放到服務(wù)器上的js文件和在本地windows或mac上運(yùn)行的文件糙臼,有些基本配置會(huì)有所不同
以下代碼效果是等待4.5s加載數(shù)據(jù),返回360搜索頁面的所有代碼
puppeteer = require('puppeteer');
(async()=>{
const browser = await puppeteer.launch({executablePath: "/root/node-v12.18.1-linux-x64/bin/node_modules/puppeteer/chrome-linux/chrome",headless: true,args: ['--no-sandbox', '--disable-setuid-sandbox'], dumpio: false,timeout:60000});
const page = await browser.newPage();
await page.goto('https://www.so.com');
console.log('加載中*****');
//等待加載時(shí)間恩商,測試可刪除
await page.waitForTimeout(3000);
const temp = await page.$eval('body',el=>el.innerHTML);
console.log(temp);
await browser.close();
})()
(1)executablePath: "/root/node-v12.18.1-linux-x64/bin/puppeteerproject/node_modules/puppeteer/chrome-linux/chrome"
executablePath參數(shù)怠堪,是第5步解壓谷歌瀏覽器的路徑揽乱,可以使用pwd查看當(dāng)前目錄(全路徑)
(2)args: ['--no-sandbox', '--disable-setuid-sandbox']
參數(shù)必須是禁用沙盒的
(3)如果增加該屬性ignoreHTTPSErrors: true,會(huì)導(dǎo)致linux服務(wù)器上不執(zhí)行代碼
8粟矿、執(zhí)行查看效果
node t.js