Playwright 安装与实战踩坑记录
目标:在 Ubuntu/类 Unix 环境安装 Playwright,完成浏览器内核部署,并验证在典型站点的抓取效果。
1. 前置条件
- Node.js 已安装(建议 v18+)
- npm 可用
- 有 sudo 权限(用于安装系统依赖,可选但推荐)
2. 安装 Playwright
2.1 安装 CLI 与库
全局安装(适合命令行直接调用):
1 | npm i -g playwright |
本地安装(适合项目脚本):
1 | npm install -D playwright |
建议两者都装:全局用于快速命令,本地用于项目脚本。
2.2 安装浏览器内核
1 | playwright install |
Ubuntu 推荐同时安装系统依赖:
1 | playwright install --with-deps |
若在无密码自动化环境执行
--with-deps会卡住(需要 sudo)。
解决:先执行playwright install(不需要 sudo),系统依赖部分后续手动执行sudo npx playwright install-deps。
2.3 验证浏览器安装
1 | playwright install --list |
预期输出(包含以下条目即正常):
1 | chromium v... |
3. 环境验证(最小可运行示例)
创建测试脚本 /your/project/test-playwright.js:
1 | const { chromium } = require('playwright'); |
运行:
1 | cd /your/project |
预期输出:
1 | 页面标题: Example Domain |
验证通过标准:能看到标题输出且进程正常退出,无 Timeout/Executable not found 等报错。
4. 实战测试
4.1 公开信息站点(低难度)
测试目标:Hacker News 首页
1 | const { chromium } = require('playwright'); |
预期结果:控制台输出前 10 条新闻标题。
结论:✅ 公开信息站点无反爬,Playwright 可直接提取。
4.2 半结构化站点(中难度)
测试目标:GitHub Trending 首页 + 仓库详情
抓取策略:
- Playwright 抓取 Trending 页项目列表(名称、描述、语言、今日新增 stars)
- 调用 GitHub REST API 批量获取 Topics、官网链接、详细描述
- 遇到 API 限流时,回退到 Playwright 单独访问仓库首页提取 README 第一段
输出:包含 10 个项目的完整 Markdown 简报。
结论:✅ Playwright + API 混合方案效果最佳。
4.3 反爬强站(高难度/不可行)
| 站点类型 | 结果 | 原因 |
|---|---|---|
| 电商评价页 | ❌ 不建议 | 涉及用户隐私与平台 ToS |
| 企业招聘站 | ❌ 404/拦截 | 企业级反爬,搜索页直接返回 404 |
| Cloudflare 防护站 | ❌ 拦截 | 直接进 “Attention Required” 验证页 |
结论:⚠️ Playwright 不是万能钥匙。Cloudflare、企业级 WAF、需登录态的站点难以用普通 headless 绕过。
5. 定时任务化(可选)
封装成 Node 脚本后,可用 OpenClaw cron 设置定时执行:
1 | # 示例:每周六 09:00 执行 |
6. 结论
- 安装方式:CLI 全局装方便命令行使用;项目本地装确保 Node.js
require能找到模块 - 系统依赖:Ubuntu 上
install-deps需要 sudo,无密码环境建议拆成两步执行 - 站点策略:公开信息站点可直接抓取;反爬强站需换策略(API、RSS、官方导出等)
- 最佳实践:Playwright 负责页面渲染,REST API 负责结构化数据,互相补位