Playwright Scraper Skill
2026-03-24
新闻来源:网淘吧
围观:62
电脑广告
手机广告
购买adidas上京东官方旗舰店。
Playwright 网页抓取技能
一个基于 Playwright 的、具备反机器人防护功能的网页抓取 OpenClaw 技能。根据目标网站的反机器人级别选择最佳方法。
🎯 用例矩阵
| 目标网站 | 反机器人级别 | 推荐方法 | 脚本 |
|---|---|---|---|
| 常规网站 | 低 | web_fetch 工具 | 不适用(内置) |
| 动态网站 | 中等 | Playwright 简易模式 | scripts/playwright-simple.js |
| 受 Cloudflare 保护 | 高 | Playwright 隐身模式⭐ | scripts/playwright-stealth.js |
| YouTube | 特殊 | 深度抓取器 | 需单独安装 |
| 特殊 | reddit-scraper | 单独安装 |
📦 安装
cd playwright-scraper-skill
npm install
npx playwright install chromium
🚀 快速开始
1️⃣ 简单网站(无反爬虫机制)
使用 OpenClaw 内置的web_fetch工具:
# 在 OpenClaw 中直接调用
嘿,帮我获取 https://example.com 的内容
2️⃣ 动态网站(需要 JavaScript)
使用Playwright Simple:
node scripts/playwright-simple.js "https://example.com"
示例输出:
{
"url": "https://example.com",
"title": "Example Domain",
"content": "...",
"elapsedSeconds": "3.45"
}
3️⃣ 受反爬虫保护的网站(如 Cloudflare 等)
使用Playwright Stealth:
node scripts/playwright-stealth.js "https://m.discuss.com.hk/#hot"
功能:
- 隐藏自动化标记 (
navigator.webdriver = false) - 真实的用户代理(iPhone, Android)
- 随机延迟以模拟人类行为
- 支持截图和HTML保存
4️⃣ YouTube视频转录
使用deep-scraper(需单独安装):
# 安装 deep-scraper 技能
npx clawhub install deep-scraper
# 使用它
cd skills/deep-scraper
node assets/youtube_handler.js "https://www.youtube.com/watch?v=VIDEO_ID"
📖 脚本说明
scripts/playwright-simple.js
- 使用场景:常规动态网站
- 速度:快速(3-5秒)
- 反爬虫:无
- 输出:JSON(标题、内容、URL)
scripts/playwright-stealth.js⭐
- 使用场景:具有Cloudflare或反爬虫防护的网站
- 速度:中等(5-20秒)
- 反机器人:中高(隐藏自动化,模拟真实用户代理)
- 输出:JSON + 截图 + HTML文件
- 已验证:在Discuss.com.hk上100%成功
🎓 最佳实践
1. 首先尝试 web_fetch
如果网站没有动态加载,使用OpenClaw的web_fetch工具——它是最快的。
2. 需要JavaScript?使用Playwright Simple
如果你需要等待JavaScript渲染,请使用playwright-simple.js。
3. 被屏蔽了?使用Stealth
如果你遇到403或Cloudflare验证,请使用playwright-stealth.js。
4. 特殊网站需要专门技能
- YouTube → deep-scraper
- Reddit → reddit-scraper
- Twitter → bird skill
🔧 自定义设置
所有脚本都支持环境变量:
# 设置截图路径
SCREENSHOT_PATH=/path/to/screenshot.png node scripts/playwright-stealth.js URL
# 设置等待时间(毫秒)
WAIT_TIME=10000 node scripts/playwright-simple.js URL
# 启用有头模式(显示浏览器)
HEADLESS=false node scripts/playwright-stealth.js URL
# 保存HTML
SAVE_HTML=true node scripts/playwright-stealth.js URL
# 自定义 User-Agent
USER_AGENT="Mozilla/5.0 ..." node scripts/playwright-stealth.js URL
📊 性能对比
| 方法 | 速度 | 反机器人检测能力 | 成功率 (Discuss.com.hk) |
|---|---|---|---|
| web_fetch | ⚡ 最快 | ❌ 无 | 0% |
| Playwright 简单模式 | 🚀 快 | ⚠️ 低 | 20% |
| Playwright 隐身模式 | ⏱️ 中等 | ✅ 中等 | 100%✅ |
| Puppeteer 隐身模式 | ⏱️ 中等 | ✅ 中高 | ~80% |
| Crawlee (深度爬虫) | 🐢 慢 | ❌ 被检测到 | 0% |
| Chaser (Rust) | ⏱️ 中等 | ❌ 被检测到 | 0% |
🛡️ 反机器人技术总结
从我们的测试中吸取的教训:
✅ 有效的反机器人措施
- 隐藏
navigator.webdriver— 至关重要 - 真实的用户代理— 使用真实设备(iPhone, Android)
- 模拟人类行为— 随机延迟、滚动
- 避免框架特征— Crawlee、Selenium 容易被检测到
- 使用
addInitScript(Playwright)— 在页面加载前注入
❌ 无效的反爬虫措施
- 仅更改用户代理—— 远远不够
- 使用高级框架(如Crawlee)—— 更容易被检测
- Docker 隔离—— 对绕过Cloudflare无帮助
🔍 故障排除
问题:403 禁止访问
解决方案:使用playwright-stealth.js
问题:Cloudflare 验证页面
解决方案:
- 增加等待时间(10-15秒)
- 尝试
headless: false(非无头模式有时成功率更高) - 考虑使用代理IP
问题:空白页面
解决方案:
- 增加
waitForTimeout - 使用
waitUntil: 'networkidle'或'DOM内容加载完毕' - 检查是否需要登录
📝 记忆与经验
2026年2月7日 Discuss.com.hk 测试结论
- ✅纯 Playwright + 隐身模式成功 (5秒, 200 OK)
- ❌ Crawlee (深度爬虫) 失败 (403)
- ❌ Chaser (Rust) 失败 (Cloudflare)
- ❌ Puppeteer 标准模式失败 (403)
最佳解决方案:纯 Playwright + 反机器人技术 (框架无关)
🚧 未来改进
- 添加代理IP轮换
- 实现Cookie管理 (维持登录状态)
- 添加验证码处理 (2captcha / Anti-Captcha)
- 批量爬取 (并行处理URL)
- 与 OpenClaw 集成
浏览器工具
📚 参考资料
文章底部电脑广告
手机广告位-内容正文底部
上一篇:WhatsApp Business
下一篇:UI/UX Pro Max


微信扫一扫,打赏作者吧~