Playwright 安装与实战踩坑记录

最近想搭建一套基于 Playwright 的自动化数据抓取工作流,从安装到验证踩了不少坑,也积累了一些实战经验。这篇文章记录完整的安装过程、常见问题以及实际测试结论,供后续查阅。

1. 安装 Playwright CLI

Playwright 是微软开源的浏览器自动化工具,支持 Chromium、Firefox、WebKit 三大内核。安装方式有两种:

全局安装(适合直接调用 playwright 命令):

1
npm i -g playwright

本地安装(推荐用于具体项目):

1
npm install -D playwright

我两种都装了:全局用于快速命令,本地用于项目脚本。

2. 安装浏览器内核

装完 CLI 后必须下载浏览器:

1
playwright install

如果想一并安装系统依赖(Ubuntu 推荐):

1
playwright install --with-deps

踩坑点:我在 Ubuntu 上执行 --with-deps 时,Playwright 需要 sudo 权限来安装系统库,但自动化环境无法输入密码,这一步卡住了。解决方式是:

  • 先执行 playwright install 下载浏览器(不需要 sudo)
  • 系统依赖部分后续手动执行:
    1
    sudo npx playwright install-deps

验证浏览器是否装好:

1
playwright install --list

输出应包含 chromium、firefox、webkit 和 ffmpeg。

3. 环境验证

在项目中验证 Playwright 是否能正常启动浏览器:

1
2
3
4
5
6
7
8
9
const { chromium } = require('playwright');

(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();
})();

运行结果:Example Domain,说明浏览器能正常启动、导航、提取 DOM。

4. 实战测试

4.1 Hacker News(低难度)

抓取首页 Top Stories 和第一条帖子的评论:

  • 页面结构简单,无反爬
  • Playwright 轻松提取标题、分数、作者、评论数
  • 共抓到 107 条评论

结论:✅ 非常顺畅

4.2 GitHub Trending(中高难度)

抓取 GitHub Trending 首页 Top 10 项目,并进一步获取每个仓库的详细描述、Topics、Stars、Forks:

  • Playwright 阶段:抓取 Trending 页的项目名、描述、语言、今日新增 stars
  • GitHub API 阶段:批量调用 api.github.com/repos/{name} 获取 Topics、官网链接、详细描述
  • 补抓阶段:遇到 API 限流时,用 Playwright 单独访问仓库首页提取 README 第一段作为简介

最终输出:一份包含 10 个热门项目的完整 Markdown 简报。

结论:✅ Playwright + API 混合方案效果最佳

4.3 反爬强站的边界(高难度/失败)

测试了几个防护较强的站点:

站点 结果 原因
淘宝商品评价 ❌ 未尝试 涉及用户隐私与平台 ToS
高校人才网 ❌ 404/被拦截 企业级反爬,搜索页直接返回 404
Academic Positions ❌ Cloudflare 直接进 “Attention Required” 拦截页

结论:⚠️ Playwright 不是万能钥匙。对于 Cloudflare、企业级 WAF、需要登录态的评价系统,普通 headless 浏览器难以绕过。

5. 定时任务化

将整个流程封装成一个 Node 脚本后,可以用 OpenClaw cron 设置为定时任务:

1
2
# 每周六早上 9 点自动抓取并发送报告
openclaw cron add ...

我最终配置了一个每周六 9:00 自动执行的 GitHub Trending 周报任务。

6. 经验总结

  1. 全局 vs 本地:CLI 全局装方便,require('playwright') 需要在项目本地装,否则 Node.js 找不到模块
  2. 系统依赖:Ubuntu 上 install-deps 需要 sudo,无密码环境建议拆成两步
  3. 反爬现实:公开信息站点(Hacker News、GitHub)可以顺利抓取;电商和招聘类站点防护严密,需换策略(API、RSS、RSSHub 等)
  4. 混合方案最佳:Playwright 负责页面渲染,REST API 负责结构化数据,互相补位

本文记录了 2026-04-13 的一次完整 Playwright 安装与验证过程。