在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实现网页截图的更多相关文章
- NoSql1 在Linux(CentOS)上安装memcached及使用
前言: 今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...
- 如何在linux CentOS 上安装chrome 谷歌浏览器?
获得linux命令的root权限:http://blog.csdn.net/mddy2001/article/details/76521101. 更改密码在终端中输入:sudo passwd root ...
- Linux~centos上安装.netcore,HelloWorld归来!
对于跨平台的.netCore来说,让它的程序运行在Linux系统上已经成为必然,也是一种趋势,毕竟我们的很多服务都放在linux服务器上(redis,mongodb,myql,fastDFS,luce ...
- 在Linux CentOS上编译并安装Clang 3.5.0
编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装. (注:CentOS的版本是6 ...
- 在Linux CentOS上部署Asp.Net Core项目(Tengine、Asp.Net Core、Centos、MySql)
一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...
- Linux CentOS上安装 MySQL 8.0.16
前言: 因为我需要在我新安装的Linux CentOS系统服务器中安装和配置MySQL服务器,然而对于我们这种Linux使用小白而言在Linux系统中下载,解压,配置MySQL等一系列的操作还是有些耗 ...
- 在Linux CentOS上搭建Jmeter压测环境
本文的主要内容是介绍如何在Linux CentOS 服务器上面搭建Jmeter的压测环境整个详细的流程,来满足我们日常工作中对于压力测试环境搭建.压力测试执行过程的需求. 一.首先我们要准备四个东西, ...
- 在Linux CentOS上编译CoreCLR
经过几天的努力,终于解决了在CentOS上编译CoreCLR的问题.最终发现问题是CMAKE_C_FLAGS的设置引起的. 只要在“src/pal/tools/clang-compiler-overr ...
- Linux1 在Linux(CentOS)上安装MySql详细记录
前记: 毕业两年了,前两天换了份工作,由以前的传统行业跳到了互联网行业.之前的公司一直在用WinServer2003+Tomcat+SqlServer/Oracle这套部署环境.对于Linux+To ...
随机推荐
- 域渗透-Kerberos协议中spn的应用
0x01 关于SPN 服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称. 服务主体名称是服务实例(可以理解为一个服务,比如 HTTP.MSSQL ...
- powershell 基础
目录 本教程概述 用到的工具 标签 简介 0x01使用简介 0x02脚本编写 0x03实例讲解 本教程概述 本课我们学习powershell使用. 用到的工具 cmd.exe powershell ...
- Python之——python-nmap的安装与常用方法说明
一.python-nmap安装 # yum -y install nmap #安装nmap工具# 模块pip方式安装# pip install nmap# 模块源码安装# wget http://xa ...
- python学习-列表、元组和字典(三)
学习笔记中的源码:传送门 3.1 列表和元组 3.2 不同类型变量的初始化: 数值 digital_value = 0 字符串 str_value = "" 或 str_value ...
- 由浅入深:Python 中如何实现自动导入缺失的库?
在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No mod ...
- 一起来刷《剑指Offer》——不修改数组找出重复的数字(思路及Python实现)
数组中重复的数字 在上一篇博客中<剑指Offer>-- 题目一:找出数组中重复的数字(Python多种方法实现)中,其实能发现这类题目的关键就是一边遍历数组一边查满足条件的元素. 然后我们 ...
- Java多线程(十五):CountDownLatch,Semaphore,Exchanger,CyclicBarrier,Callable和Future
CountDownLatch CountDownLatch用来使一个线程或多个线程等待到其他线程完成.CountDownLatch有个初始值count,await方法会阻塞线程,直到通过countDo ...
- char 、signed char、unsigned char
看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx= ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理. 本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集 ...
- Apache Solr Velocity模板注入RCE漏洞复现
Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...