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开发干货。

相关推荐
霍理迪9 分钟前
Vue的响应式和生命周期
前端·javascript·vue.js
李剑一13 分钟前
别再瞎写了!Cesium 模型 360° 环绕,4 套源码全公开,项目直接用
前端
小码哥_常31 分钟前
Android消息机制:Handler、Looper和Message的深度剖析
前端
小码哥_常34 分钟前
安卓开发新姿势:文件Picker全攻略,无痛适配不再难
前端
happymaker062644 分钟前
web前端学习日记——DAY04
前端·学习
发现一只大呆瓜1 小时前
React-路由监听 / 跳转 / 守卫全攻略(附实战代码)
前端·react.js·面试
swipe2 小时前
为什么 RAG 一定离不开向量检索:从文档向量化到语义搜索的工程实现
前端·llm·agent
OpenTiny社区2 小时前
AI-Extension:让 AI 真的「看得到、动得了」你的浏览器
前端·ai编程·mcp
IT_陈寒2 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
竹林8183 小时前
在Web3前端用Node.js子进程批量校验钱包,我踩了这些性能与安全的坑
javascript·node.js