惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
D
Docker
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
月光博客
月光博客
小众软件
小众软件
量子位
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
罗磊的独立博客
博客园 - 叶小钗
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
博客园 - 司徒正美
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
C
Check Point Blog

博客园 - 网无忌

体验Coding Plan 本地安装Dify 关于Docker Desktop的常用配置 渐变文字的小技巧 机器学习基础 pydantic中关于属性必填和选填的区别 CentOS的常用命令 密码中含有特殊字符造成mysqldump备份失败的一个小教训 通过模拟Cron执行环境来复现脚本执行失败的过程 查看mysql当前的执行任务,并关闭其中的指定任务 配置WSL2实现与宿主机的网络互通 超简单的 rsync 命令,实现文件的增量同步 十九年白驹过隙,老园子聊发少年狂 Linux中安装anaconda 矢量数据库Chromadb的入门信息 向量数据库横比 整理了一下目前各Linux发行版的清单 盘点各领域的包管理器 使用 jstat 命令查看 JVM 的GC信息 记录一个在js环境生成随机(伪造)数据的小插件,方便生成调试数据 使用Puppeter实现的全屏网页截图的小工具 开启 mysql 的 general_log
在wsl中部署puppeteer的相关笔记
网无忌 · 2024-07-05 · via 博客园 - 网无忌

一. 环境

 
WSL2:Ubuntu 22.04
NVM:0.39.7
Node.js:18.20.3
Npm:10.7.0
Puppeteer:22.12.1
 

二. 安装Node.js环境

 
习惯使用NVM管理Node版本,先来安装NVM(官网):
 

  1. 下载并解压
cd $HOME
mkdir -p .nvm
cd .nvm
wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.7.tar.gz
tar -zxvf v0.39.7.tar.gz

 
2. 配置环境
 
在~/.bashrc的末尾,添加如下语句:

export NVM_DIR="$HOME/.nvm/nvm-0.39.7"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

 
3. 使能配置
 

source ~/.bashrc

 
4. 安装Node.js版本

nvm install 18 --lts

 
--lts表示该大版本的最新稳定版
 
5. 查看当前已安装的Node.js版本列表:
 

nvm ls

三. puppeteer的应用

const pageOpts = {
	width: 1366,
	height: 800,
	deviceScaleFactor: 1,
};

const screenshotOpts = {
	type: "png",
	path: "thum.png",
	fullPage: true,
};

const url = "https://www.itez.com.cn";

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport(pageOpts);
await page.goto(url, { waitUntil: "networkidle2" });
await page.screenshot(screenshotOpts);

四. 缺少依赖问题

 
反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的。

  1. Debian发行版:
apt install -y gconf-service libc6 libcairo2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libstdc++6 libx11-6
apt install -y libx11-xcb1 libxcb1 libxcursor1 libxext6 libxi6 libxrender1 libxtst6 ca-certificates fonts-liberation libappindicator1 lsb-release xdg-utils
apt install -y libnspr4 libdrm2 libxkbcommon0 libgbm1 libpango-1.0-0 libpangocairo-1.0-0 libxshmfence1
apt install -y libgtk-3-dev libnotify-dev libgconf-2-4 libxss1
apt install -y libnss3
apt install -y libatk1.0-0
apt install -y libatk-bridge2.0-0
apt install -y libcups2
apt install -y libxcomposite1
apt install -y libxdamage1
apt install -y libxfixes3
apt install -y libxrandr2
apt install -y libasound2

 
2. Redhat发行版如CentOS:

yum install atk at-spi2-atk libdrm libXcomposite libXdamage libXrandr libX11 libXcursor libXext libXi libXtst cups-libs libXScrnSaver alsa-lib

五. 安全沙箱问题

错误信息:

Error: Failed to launch the browser process! undefined
[16644:16644:0705/112140.109819:ERROR:zygote_host_impl_linux.cc(99)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

解决办法:

  1. 使用 --no-sandbox 选项
const browser = await puppeteer.launch({
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

  1. 以非 root 用户运行
  2. 在 Docker 容器内运行
     

六. 中文乱码问题

 
由于Linux对中文支持不好,需要手动安装中文字体,否则截图之后会发现中文部分全是小方框。
可安装文泉驿字体。

文泉驿是一个以开发开源、免费中文电子资源--如汉字字体、词库等--为目标的公益性组织。她的创办宗旨是实现“任何人在任何地方都可以自由使用汉字和汉语进行交流”。
 

  1. 查找字体
# Debian
apt search wqy
# Redhat
yum search wqy


 
2. 安装字体

apt install fonts-wqy-microhei -y
apt install fonts-wqy-zenhei -y
apt install xfonts-wqy -y

七. 有用的资源

 
在查找问题过程中发现的一些宝藏资源,标记一下。
 
Ubuntu服务器安装puppeteer
ubuntu系统安装Puppeteer
Linux安装部署Puppeteer踩坑