在linux (centos)上使用puppeteer实现网页截图功能

 更新时间:2019年11月24日 15:40:59   作者:DragonDean  
这篇文章主要介绍了在linux (centos)上使用puppeteer实现网页截图功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

你在linux上安装puppeteer时可能遇到如下问题,本文将引导你如何爬坑!

> puppeteer@2.0.0 install /www/node_modules/puppeteer
> node install.js

ERROR: 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并实际截图的过程如下:

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
# 移动重命名(可选)
mv node-v8.9.1-linux-x64 /www/nodejs
# 创建软连接(快捷方式),如果上一步重命名不同则这一步的下划线部分根据实际情况做调整
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会因为chromium无法下载而报错)

npm i puppeteer-core

4.新建一个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();
})();

这一步的代码跟网上的可能不同,一个是require里面的是puppeteer-core而不是puppeteer,因为我们安装的就是puppeteer-core而不是puppeteer

另一个是launch里面有两个参数,第一个参数也是因为我们没有直接安装puppeteer所以需要指定路径,第二个参数则是因为chromium的某些限制,root账号执行需要加上这个参数

5.执行a.js

node a.js

执行完之后就可以看到一个example.png

注意:如果页面中有中文可能无法正常显示,因为缺乏中文字体。解决方法是直接把你自己电脑中的c:/windows/fonts中的中文字体上传到服务器的/usr/share/fonts/chinese下即可(默认没有chinese目录,自己新建即可)。如果不行请参考这个连接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相关文档 https://pptr.dev/

总结

以上所述是小编给大家介绍的在linux (centos)上使用puppeteer实现网页截图功能,希望对大家有所帮助!

相关文章

  • ubuntu系统修改时区和时间的方法

    ubuntu系统修改时区和时间的方法

    今天小编就为大家分享一篇关于ubuntu系统修改时区和时间的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • centos6.7 安装python2.7、pip2.7、easy_install-2.7的方法

    centos6.7 安装python2.7、pip2.7、easy_install-2.7的方法

    这篇文章主要介绍了centos6.7 安装python2.7、pip2.7、easy_install-2.7的方法,需要的朋友可以参考下
    2017-03-03
  • Linux系统的文件传输方法

    Linux系统的文件传输方法

    这篇文章主要介绍了Linux系统的文件传输方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 如何使用Linux文本操作命令ed进行提权nov5详解

    如何使用Linux文本操作命令ed进行提权nov5详解

    这篇文章主要给大家介绍了关于如何使用Linux文本操作命令ed进行提权nov5的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Linux命令学习总结:详解shutdown命令

    Linux命令学习总结:详解shutdown命令

    本篇文章主要介绍了Linux命令学习总结:详解shutdown命令,该命令可以安全关闭或者重新启动系统。有兴趣的可以了解一下。
    2016-12-12
  • Vim 强制保存只读类型文件的方法

    Vim 强制保存只读类型文件的方法

    你是否会和我一样经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限。这个时候就需要强制保存只读类型文件的方法了,这篇文章就介绍了Vim强制保存只读类型文件的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • linux共享上网设置实例详解

    linux共享上网设置实例详解

    这篇文章主要介绍了linux共享上网设置实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Linux中FTP账号无法删除文件夹的解决方案

    Linux中FTP账号无法删除文件夹的解决方案

    本篇文章主要给大家分享了Linux中FTP账号无法删除文件夹的解决方案以及原因探索,有兴趣的朋友学习下吧。
    2018-01-01
  • Linux中date命令转换日期提示date: illegal time format问题解决

    Linux中date命令转换日期提示date: illegal time format问题解决

    date命令是显示或设置系统时间与日期,最近在使用中发现了一个问题,所以下面这篇文章主要给大家介绍了关于Linux中date命令转换日期提示date: illegal time format错误的解决方法,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-12-12
  • Apache APISIX Dashboard 未授权访问漏洞分析(CVE-2021-45232)

    Apache APISIX Dashboard 未授权访问漏洞分析(CVE-2021-45232)

    Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能,这篇文章主要介绍了Apache APISIX Dashboard 未授权访问漏洞(CVE-2021-45232),需要的朋友可以参考下
    2023-03-03

最新评论