让 AI 助手化身智能爬虫 — 配置、实战、反爬应对、常见问题一站搞定
OpenClaw GitHub Playwright 官网 OpenClaw 介绍 安装排错指南传统爬虫工具(requests、Scrapy、BeautifulSoup)擅长处理静态 HTML,但面对 SPA(单页应用)、动态渲染、AJAX 懒加载、无限滚动等现代前端页面时往往束手无策。OpenClaw 内置浏览器自动化能力,底层借助 Playwright 驱动真实浏览器(Chromium/Firefox/WebKit),配合 AI 的智能理解能力,可以:
OpenClaw + Playwright 爬取方案的整体架构如下:
npm install -g openclaw@latest openclaw onboard --install-daemon向导会引导你完成 Gateway、工作区、AI 模型等基础配置。如果你已经安装过,运行
openclaw update --channel stable 确保是最新版本。
openclaw.json 配置文件中启用 browser 模块:
"headless": false 可以在调试时看到浏览器的实际操作过程,生产环境建议设为 true。# 安装 Playwright 及 Chromium 浏览器 npx playwright install chromium # 如果需要其他浏览器 npx playwright install firefox npx playwright install webkit # 安装系统依赖(Linux 环境) npx playwright install-deps
# 搜索可用的浏览器相关 Skills openclaw skill search browser # 安装推荐的浏览器自动化 Skill openclaw skill install @anthropic/browser-automation # 安装网页爬取专用 Skill openclaw skill install @community/web-scraper
# 启动 Gateway openclaw gateway --port 18789 --verbose # 发送测试消息,让 AI 访问一个网页 openclaw agent --message "请访问 https://example.com 并告诉我页面标题" --thinking high如果 AI 能正确返回页面标题,说明浏览器自动化配置成功。
# 通过自然语言指令爬取 openclaw agent --message " 访问 https://news.example.com, 等待页面完全加载后, 提取所有新闻标题和链接, 以 JSON 格式输出 " --thinking highAI 会自动:①打开浏览器 → ②导航到目标页面 → ③等待 JS 渲染完成 → ④定位新闻元素 → ⑤提取并格式化数据。
openclaw agent --message " 访问 https://shop.example.com/products, 向下滚动 5 次,每次等待 2 秒让新内容加载, 提取所有商品的名称、价格和图片链接, 输出为 CSV 格式 " --thinking high
openclaw agent --message " 1. 访问 https://dashboard.example.com/login 2. 在用户名输入框填入 myuser@example.com 3. 在密码输入框填入 mypassword123 4. 点击登录按钮 5. 等待跳转到仪表盘页面 6. 提取本月的销售数据汇总 " --thinking high
$DASHBOARD_PASSWORD 或 OpenClaw 的 secret 管理功能存储敏感凭据。openclaw agent --message " 访问 https://report.example.com/chart, 等待图表加载完成, 对图表区域截图, 分析截图中的数据趋势并总结 " --thinking highOpenClaw 的多模态能力可以直接理解截图内容,无需额外 OCR 工具。
openclaw agent --message " 依次访问以下网页,提取每个页面的文章标题和摘要: - https://blog.example.com/page/1 - https://blog.example.com/page/2 - https://blog.example.com/page/3 - https://blog.example.com/page/4 - https://blog.example.com/page/5 合并所有结果,按发布日期排序输出 " --thinking high
openclaw agent --message " 访问 https://app.example.com/dashboard, 监听所有发往 /api/ 路径的网络请求, 捕获响应数据中的 JSON, 提取其中 'metrics' 字段的内容 " --thinking high
page.route() 拦截网络请求,OpenClaw 的 browser.act 底层利用了这一能力。这比解析渲染后的 DOM 更稳定,不受页面样式变化影响。openclaw agent --message " 1. 访问 https://competitor.example.com/pricing 2. 提取所有套餐名称和价格 3. 与上次爬取的结果对比 4. 如果有变化,列出变更详情 5. 将结果发送到 Telegram " --thinking high配合 OpenClaw 的 memory 功能,AI 可以记住上次的爬取结果,自动做对比。
现代网站通常有多层反爬机制,以下是使用 OpenClaw + Playwright 时的应对策略:
navigator.webdriver 检测。加上 --disable-blink-features=AutomationControlled 参数可以绕过大部分基础检测。# 在指令中明确要求延迟 openclaw agent --message " 访问以下 10 个商品页面, 每个页面之间等待 3-5 秒的随机间隔, 提取商品名称和价格 " --thinking high建议的频率上限:
"headless": false,验证码出现时让你手动完成,之后 AI 继续操作。
# 在指令中要求错误处理 openclaw agent --message " 访问以下 URL 列表,如果某个页面加载失败, 跳过并记录失败的 URL,继续处理下一个。 最后输出成功和失败的汇总。 " --thinking high
robots.txt 规则
以下问题按类别整理,涵盖环境配置、浏览器运行、页面交互、反爬对抗、数据提取、性能优化等方面。
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium
HTTPS_PROXY=http://127.0.0.1:7890 npx playwright install chromium
~/.cache/ms-playwright/ 目录
npx playwright install-deps 自动安装,或手动安装:
sudo apt-get install -y libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libgbm1
wsl --update 更新 WSL
xvfb:sudo apt install xvfb && xvfb-run npx playwright install chromium
openclaw.json 中 "browser": { "enabled": true } 已正确配置。修改配置后需要重启 Gateway:openclaw gateway restart。也可运行 openclaw doctor 检查配置状态。
npx playwright install 重新下载匹配的浏览器。
npx playwright uninstall --all && npx playwright install chromium。建议只安装需要的浏览器(通常 Chromium 足够)。
mcr.microsoft.com/playwright:v1.xx.0-jammy
--cap-add=SYS_ADMIN 或使用 --security-opt seccomp=unconfined
--ipc=host 避免共享内存不足
nvm install 22 && nvm use 22。
sudo npm install -g。推荐修改 npm 全局目录:
mkdir ~/.npm-global npm config set prefix '~/.npm-global' export PATH=~/.npm-global/bin:$PATH
export PLAYWRIGHT_BROWSERS_PATH=~/.cache/ms-playwright
npx playwright install(而非 pnpx)安装浏览器
openclaw.json 中设置 "timeout": 60000
free -h(Linux)或任务管理器(Windows)
NODE_OPTIONS=--max-old-space-size=4096
"args": ["--disable-blink-features=AutomationControlled"]
"headless": false 对比有头/无头模式差异
"ignoreHTTPSErrors": true。
frame.locator() 访问 iframe 内容。
pkill -f chromium 或 pkill -f chrome
taskkill /F /IM chrome.exe
"args": ["--disable-gpu", "--disable-software-rasterizer"]。这不影响网页爬取功能。
type() 方法会模拟真实键入。
<select>。在指令中描述操作流程:"点击下拉框展开选项,然后点击'选项名称'"。
page.setInputFiles('input[type=file]', 'path/to/file')。在 OpenClaw 指令中描述:"找到文件上传按钮,上传 /tmp/data.csv 文件"。注意文件路径需要是 Gateway 所在机器的本地路径。
page.mouse.move() 和 page.dragAndDrop()。在指令中详细描述拖拽的起点和终点。
"persistentContext": true
locator() 默认支持 Shadow DOM 穿透。
networkidle 等待策略
headless: false,手动完成验证后继续
navigator.webdriver = true。解决方法:
--disable-blink-features=AutomationControlled 启动参数
navigator.webdriver
Retry-After 值
storageState 保存和恢复浏览器状态
headless: false 对比真实显示和爬取结果
https://目标域名/robots.txt
--thinking high 增加推理深度
openclaw agent --message "
提取数据并严格按照以下 JSON 格式输出:
{
'items': [
{ 'title': '...', 'price': 0.00, 'url': '...' }
],
'total': 0,
'page': 1
}
" --thinking high
src 属性后用 curl/wget 下载
openclaw doctor
openclaw logs --tail 50