用途
Playwright Web Scraper 用于从多个网页中提取结构化数据,并采用尊重网站、符合伦理的爬取方式。当任务涉及“从网站抓取数据”“从页面提取信息”“从站点收集数据”或“爬取多个页面”时,可使用本技能。它不适用于测试工作流(应使用 playwright-e2e-testing)、错误监控(应使用 playwright-console-monitor)或网络分析(应使用 playwright-network-analyzer)。使用时应始终尊重 robots.txt 和速率限制。
主要能力
- 使用 Playwright MCP 浏览器工具导航页面、等待内容加载并执行 JavaScript 提取数据。
- 通过 browser_evaluate 从页面中提取结构化字段,例如标题、价格、评分、链接等,并可过滤不完整记录。
- 支持分页抓取,通过循环翻页并检查“下一页”按钮状态来收集多页数据。
- 内置速率限制策略:标准站点随机延迟 1-3 秒,高流量站点 3-5 秒,小型站点 5-10 秒,出错后采用指数退避(5s、10s、20s、40s)。
- 根据 HTTP 响应码自适应调整:200 继续正常延迟;429 增加延迟至 10 秒后重试;503 等待 60 秒后重试;403 停止抓取该域名。
- 提供 URL 验证脚本 validate_urls.py,可检查 URL 格式、按域名分组、检查 robots.txt 合规性并输出统计信息。
- 提供结果处理脚本 process_results.py,可将抓取的 JSON 转换为 CSV、JSON 或 Markdown 表格,并查看统计信息。
- 支持监控控制台消息和网络请求,检测速率限制警告、封禁提示或验证码等阻塞信号。
使用方式
- 准备 URL 列表:创建文本文件,每行一个 URL。
- 验证 URL 与 robots.txt 合规性:运行
python scripts/validate_urls.py urls.txt --user-agent "MyBot/1.0",严格模式可加--strict。 - 初始化抓取会话:导航到首个 URL 并执行 browser_snapshot 了解页面结构,识别 CSS 选择器。
- 实施限速爬取:在循环中导航、等待内容标记、加入随机延迟(1-3 秒),然后通过 browser_evaluate 提取数据。
- 处理错误与速率限制:通过 browser_network_requests 检查 429/503 状态,通过 browser_console_messages 检查速率限制、封禁或验证码消息,必要时指数退避。
- 聚合与存储结果:将结果写入 JSON 文件,再使用 process_results.py 转换为 CSV、JSON 或 Markdown,并可查看统计。
适用场景
- 从电商网站抓取商品列表(标题、价格、评分、链接等)。
- 从多个分页页面收集结构化数据。
- 需要遵守 robots.txt 和速率限制的合规数据采集任务。
- 将抓取结果转换为 CSV、JSON 或 Markdown 以便后续分析。
限制
- 不用于测试工作流、错误监控或网络分析。
- 需要 Playwright MCP 浏览器工具和 Python 3.8+(脚本仅使用标准库)。
- 需要了解基本 CSS 选择器、JavaScript 数据提取、HTTP 状态码以及网络爬取伦理。
- 应避免不检查 robots.txt、请求间无延迟、忽略 429/503、抓取个人/私密信息、不监控控制台阻塞消息、抓取明确禁止的站点、违反版权使用数据、分页处理不当、硬编码选择器无回退、不验证数据结构等行为。
- 部分站点在服务条款中禁止抓取,使用前应确认。
- 建议从小规模开始(5-10 个 URL),逐步扩大,并增量保存进度以防中断。