在linux (centos)上使用puppeteer實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能
你在linux上安裝puppeteer時(shí)可能遇到如下問(wèn)題,本文將引導(dǎo)你如何爬坑!
> puppeteer@2.0.0 install /www/node_modules/puppeteer
> node install.jsERROR: Failed to download Chromium r706915! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
{ Error: EACCES: permission denied, mkdir '/www/node_modules/puppeteer/.local-chromium'
-- ASYNC --
at BrowserFetcher.<anonymous> (/www/node_modules/puppeteer/lib/helper.js:111:15)
at Object.<anonymous> (/www/node_modules/puppeteer/install.js:62:16)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: '/www/node_modules/puppeteer/.local-chromium' }
npm WARN enoent ENOENT: no such file or directory, open '/www/package.json'
npm WARN www No description
npm WARN www No repository field.
npm WARN www No README data
npm WARN www No license field
我成安裝puppeteer并實(shí)際截圖的過(guò)程如下:
1.安裝nodejs和npm
# 下載解壓 wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz tar -xvf node-v8.9.1-linux-x64.tar.xz # 移動(dòng)重命名(可選) mv node-v8.9.1-linux-x64 /www/nodejs # 創(chuàng)建軟連接(快捷方式),如果上一步重命名不同則這一步的下劃線部分根據(jù)實(shí)際情況做調(diào)整 ln -s /www/nodejs/bin/node /usr/local/bin/node ln -s /www/nodejs/bin/npm /usr/local/bin/npm
2.安裝chromium
yum install chromium
3.安裝puppeteer-core(直接安裝pupperter會(huì)因?yàn)閏hromium無(wú)法下載而報(bào)錯(cuò))
npm i puppeteer-core
4.新建一個(gè)a.js
const puppeteer = require('puppeteer-core'); (async () => { const browser = await puppeteer.launch({ executablePath: '/usr/bin/chromium-browser', args:["--no-sandbox"] }); const page = await browser.newPage(); await page.goto('https://www.baidu.com'); await page.screenshot({path: 'example.png'}); await browser.close(); })();
這一步的代碼跟網(wǎng)上的可能不同,一個(gè)是require里面的是puppeteer-core而不是puppeteer,因?yàn)槲覀儼惭b的就是puppeteer-core而不是puppeteer
另一個(gè)是launch里面有兩個(gè)參數(shù),第一個(gè)參數(shù)也是因?yàn)槲覀儧](méi)有直接安裝puppeteer所以需要指定路徑,第二個(gè)參數(shù)則是因?yàn)閏hromium的某些限制,root賬號(hào)執(zhí)行需要加上這個(gè)參數(shù)
5.執(zhí)行a.js
node a.js
執(zhí)行完之后就可以看到一個(gè)example.png
注意:如果頁(yè)面中有中文可能無(wú)法正常顯示,因?yàn)槿狈χ形淖煮w。解決方法是直接把你自己電腦中的c:/windows/fonts中的中文字體上傳到服務(wù)器的/usr/share/fonts/chinese下即可(默認(rèn)沒(méi)有chinese目錄,自己新建即可)。如果不行請(qǐng)參考這個(gè)連接https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=centos%20%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93&oq=puppeteer&rsv_pq=a90b2ea50000943a&rsv_t=9035FHeJQWcr7x6RGsK%2BmDYU11AFyz8svepkcwhlQ51aDVXUfHrKZA7vFjQ&rqlang=cn&rsv_enter=0&rsv_dl=tb&inputT=5789&rsv_sug3=132&rsv_sug1=63&rsv_sug7=100&rsv_sug2=0&rsv_sug4=5908
puppeter相關(guān)文檔 https://pptr.dev/
總結(jié)
以上所述是小編給大家介紹的在linux (centos)上使用puppeteer實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能,希望對(duì)大家有所幫助!
相關(guān)文章
ubuntu系統(tǒng)修改時(shí)區(qū)和時(shí)間的方法
今天小編就為大家分享一篇關(guān)于ubuntu系統(tǒng)修改時(shí)區(qū)和時(shí)間的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03centos6.7 安裝python2.7、pip2.7、easy_install-2.7的方法
這篇文章主要介紹了centos6.7 安裝python2.7、pip2.7、easy_install-2.7的方法,需要的朋友可以參考下2017-03-03如何使用Linux文本操作命令ed進(jìn)行提權(quán)nov5詳解
這篇文章主要給大家介紹了關(guān)于如何使用Linux文本操作命令ed進(jìn)行提權(quán)nov5的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Linux命令學(xué)習(xí)總結(jié):詳解shutdown命令
本篇文章主要介紹了Linux命令學(xué)習(xí)總結(jié):詳解shutdown命令,該命令可以安全關(guān)閉或者重新啟動(dòng)系統(tǒng)。有興趣的可以了解一下。2016-12-12linux共享上網(wǎng)設(shè)置實(shí)例詳解
這篇文章主要介紹了linux共享上網(wǎng)設(shè)置實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05Linux中FTP賬號(hào)無(wú)法刪除文件夾的解決方案
本篇文章主要給大家分享了Linux中FTP賬號(hào)無(wú)法刪除文件夾的解決方案以及原因探索,有興趣的朋友學(xué)習(xí)下吧。2018-01-01Linux中date命令轉(zhuǎn)換日期提示date: illegal time format問(wèn)題解決
date命令是顯示或設(shè)置系統(tǒng)時(shí)間與日期,最近在使用中發(fā)現(xiàn)了一個(gè)問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于Linux中date命令轉(zhuǎn)換日期提示date: illegal time format錯(cuò)誤的解決方法,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。2017-12-12Apache?APISIX?Dashboard?未授權(quán)訪問(wèn)漏洞分析(CVE-2021-45232)
Apache?APISIX?是一個(gè)動(dòng)態(tài)、實(shí)時(shí)、高性能的?API?網(wǎng)關(guān),?提供負(fù)載均衡、動(dòng)態(tài)上游、灰度發(fā)布、服務(wù)熔斷、身份認(rèn)證、可觀測(cè)性等豐富的流量管理功能,這篇文章主要介紹了Apache?APISIX?Dashboard?未授權(quán)訪問(wèn)漏洞(CVE-2021-45232),需要的朋友可以參考下2023-03-03