puppeteer安装使用以及"Failed to set up Chrome v122.0.6261.94!"下载失败问题解决

概述

Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。

Puppeteer 是 Google Chrome 团队官方的无界面(Headless)Chrome 工具 。所以这个库一般默认打开Chrome或者是Chromium 。如果要使用这个库去操作edge 的话,会出现一定的限制,那此时,朋友你就更应该去了解一下playwright这个库。

回到原来的话题,puppetter的功能十分强大 ,可以做到很多好玩的事情。例如:生成页面的截图和PDF,抓取SSR,抓取网站内容,模拟登陆等。一般来说,写爬虫都会用到这个。

实现步骤

1.新建文件夹,在VScode集成终端打开

2.初始化项目

csharp 复制代码
npm init

3.安装puppeteer

css 复制代码
npm i puppeteer --save

安装时可能出现的报错

出于安全考虑,npm不支持以 root 用户运行,用 root 用户身份运行,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会报错了。简单来说就是在puppeteer下载的时候,需要下载相关的Chrome,但此时的权限不够,就造成了puppeteer下载失败

解决方法一:

设置跳过Chrome的下载

命令行输入

ini 复制代码
set PUPPETEER_SKIP_DOWNLOAD="true"

然后再次运行

css 复制代码
npm i puppeteer

但是这种方法之后,需要去自己下载相关的Chrome。并在使用的时候进行一个路径的引入。

(我一开始也是用的这个方法,但是会接着跳出下一个无法安装,所以就尝试了方法二)

解决方法二(亲测好用):

跳过所有相关脚本的下载

命令行输入

css 复制代码
npm install puppeteer --ignore-scripts

此时就跳过了所有相关脚本的下载,用这种方法下载的puppeteer和puppeteer-core类似

该方法和方法一一样需要在使用的时候进行相关的路径引入

解决方法三:

命令行输入

ini 复制代码
npm install puppeteer --unsafe-perm=true --allow-root

--unsafe-perm=true:这个选项的意思就是告知npm在暗转的过程中忽略权限检查。

--allow-root:这个选线允许用root用户身份安装包

ps: 这样子安装的话,可能会存在一定的风险。

4.运行puppeteer

新建一个demo.js,引入puppeteer包,然后配置Chrome的启动路径。调用puppeteer.launch()方法启动Chrome。以下是一个简单的示例。

js 复制代码
const puppeteer = require('puppeteer');
​
async function openWebsite() {
  const browser = await puppeteer.launch({
    //注意:这里配置的就是自己下载的本地Chrome可执行文件的路径
    executablePath: "C:\AppData\Local\Google\Chrome\Application\chrome.exe", 
    //这个配置项的意思是:是否无界面,这里选择有界面,方便调试
    headless: false
  });
​
  const page = await browser.newPage();
  //goto中的参数,选择打算访问的网页,这里选择的是百度
  await page.goto('https://www.iqiyi.com/?vfm=f_588_wrb&fv=ac30238882b84c8c');
​
  await browser.close();
}
​
openWebsite();
相关推荐
防火墙在线1 天前
前后端通信加解密(Web Crypto API )
前端·vue.js·网络协议·node.js·express
水冗水孚1 天前
效能工具(九)之编写nodejs脚本使用get-video-duration批量读取视频时长,并生成sql语句修复数据库表字段值
sql·node.js
huangql5201 天前
Vite与Webpack完全指南:从零开始理解前端构建工具
前端·webpack·node.js
api_180079054601 天前
【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
大数据·开发语言·python·数据挖掘·node.js
用户47949283569152 天前
你知道node背后的libuv是什么吗
node.js
pixle02 天前
从零学习Node.js框架Koa 【一】 Koa 初探从环境搭建到第一个应用程序
前端·node.js·web·koa.js·web全栈·node服务端框架
Moment2 天前
为什么我们从 Python 迁移到 Node.js
前端·后端·node.js
冴羽2 天前
为什么在 JavaScript 中 NaN !== NaN?背后藏着 40 年的技术故事
前端·javascript·node.js
IT古董2 天前
全面理解 Corepack:Node.js 的包管理新时代
前端·node.js·corepack
Jonathan Star2 天前
NestJS 是基于 Node.js 的渐进式后端框架,核心特点包括 **依赖注入、模块化架构、装饰器驱动、TypeScript 优先、与主流工具集成** 等
开发语言·javascript·node.js