用途:本技能使用 Node.js 浏览器自动化库 Playwright 进行网页抓取,重点应对动态内容、登录认证流程、分页、数据提取和截图,以便可靠地抓取现代网站。
适用场景:适合抓取由 JavaScript 渲染的站点(如 React、Angular 应用)、需要登录的页面(如仪表盘)、存在多页结果(如搜索结果)以及需要截图等视觉数据的场景。对于纯静态 HTML 站点,使用更简单的工具即可,不必用本技能。
主要能力:通过浏览器控制动态加载并交互内容;管理登录认证(表单或 API 令牌);处理分页(翻页、点击“下一页”或解析 URL);用选择器提取数据并可输出 JSON 或保存文件;截取截图或整页 PDF 用于调试或报告;支持无头或有界面浏览器模式。
使用方式:先用 Playwright 的 Node.js API 初始化浏览器上下文,再创建页面导航,采用异步模式提高可靠性。认证抓取按上下文处理 cookie 或会话;分页用循环遍历页面;对易失败的元素使用 try-catch。配置可通过 JSON 文件或环境变量传入以复用。安装命令:npm install playwright。常用方法包括:chromium.launch({ headless: true })、browser.newPage()、page.goto(url)、page.fill()、page.click()、page.evaluate()、page.$、page.waitForSelector()、page.screenshot({ path: 'screenshot.png' });脚本可用 npx playwright test,支持 --headed、--timeout 等参数。认证建议用环境变量(如 PLAYWRIGHT_USERNAME、PLAYWRIGHT_PASSWORD)避免硬编码;配置示例为 JSON,如 { "url": "https://target.com", "selector": "#data-element" },通过 node scraper.js --config config.json 传入。需要 Node.js 14+,代理可用 browser.launch({ proxy: { server: 'http://myproxy.com:8080' } })。
限制与错误处理:需预期动态加载超时或选择器失败,可用 page.waitForSelector 加超时并 catch;导航失败用 try-catch(如 waitUntil: 'networkidle')并关闭浏览器;认证失败可检查错误元素并抛错;建议记录详细错误并重试最多 3 次。
关联:与 selenium-automation(替代浏览器自动化工具)相关,依赖 node-runtime,可与 data-extraction 配合做后处理。