Puppeteer入门指南:掌控浏览器,开启自动化新时代

引言:什么是Puppeteer?

Puppeteer是一个由Google开发的Node.js库,它提供了一个高级API来通过DevTools协议控制Chrome或Chromium浏览器。Puppeteer默认以无头模式运行,但也可以配置为显示浏览器界面。它广泛应用于网页自动化、爬虫开发、自动化测试等领域。

环境准备

  • 项目初始化: 创建一个新目录,进入并初始化npm项目:

    bash 复制代码
    mkdir puppeteer-demo
    cd puppeteer-demo
    npm init -y

安装Puppeteer

bash 复制代码
npm install puppeteer
  • 这个命令会安装Puppeteer的最新版本,并自动下载一个与之兼容的Chromium浏览器(下载可能需要一些时间,取决于网络)。

注意:如果遇到如下问题,请按照提示操作,跳过浏览器的下载

bash 复制代码
### 国内的网络环境大概率是下载不成功的,以上的报错应该比较常见,下面是设置如何跳过下载的方式
# Windows (CMD)
set PUPPETEER_SKIP_DOWNLOAD=true && npm install puppeteer

# Windows (PowerShell)
$env:PUPPETEER_SKIP_DOWNLOAD="true"; npm install puppeteer

Hello Puppeteer! - 你的第一个脚本

创建一个 hello-puppeteer.js 文件:

javascript 复制代码
 const puppeteer = require('puppeteer');

 async function start() {
     // 启动浏览器
     const browser = await puppeteer.launch({
         executablePath:'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',  // 如果安装的时候跳过了下载浏览器,就需要指定本地已经下载的浏览器路径
         headless: false, // 不使用无头模式
         slowMo: 250, // 慢速模式,便于观察
         args: ['--window-size=1200,800'] // 设置窗口大小
     });

     // 打开新标签页
     const page = await browser.newPage();

     // 访问网站
     await page.goto('https://www.baidu.com');

     // 截图
     await page.screenshot({ path: 'example.png' });

     // 关闭浏览器
     await browser.close();
 }

 start();
  • 关键点:

    • puppeteer.launch(): 启动浏览器,返回一个Browser实例。headless: false 让我们能看到浏览器操作过程,非常适合调试。
    • executablePath:如果安装的时候跳过了下载浏览器,就需要指定本地已经下载的浏览器路径,反之可以不指定
    • browser.newPage(): 创建一个新的页面(标签页),返回Page对象,这是我们操作网页的主要接口。
    • page.goto(url): 导航到指定的URL。
    • page.screenshot(options): 截取当前页面的截图并保存到文件。
    • browser.close(): 关闭浏览器。务必在脚本结束时关闭,释放资源。

运行你的脚本

bash 复制代码
node hello-puppeteer.js

你应该能看到一个浏览器窗口打开,访问 https://www.baidu.com,然后截图保存为 example.png,最后浏览器关闭。恭喜!你成功运行了第一个Puppeteer脚本!

总结

如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript开发干货。

相关推荐
GISer_Jing3 小时前
前端面试通关:Cesium+Three+React优化+TypeScript实战+ECharts性能方案
前端·react.js·面试
落霞的思绪3 小时前
CSS复习
前端·css
咖啡の猫5 小时前
Shell脚本-for循环应用案例
前端·chrome
百万蹄蹄向前冲8 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5818 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路8 小时前
GeoTools 读取影像元数据
前端
ssshooter9 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
你的人类朋友9 小时前
【Node.js】什么是Node.js
javascript·后端·node.js
Jerry10 小时前
Jetpack Compose 中的状态
前端
dae bal10 小时前
关于RSA和AES加密
前端·vue.js