OpenClaw浏览器自动化:Phi-3-mini-128k-instruct操控Chrome完成数据采集
OpenClaw浏览器自动化:Phi-3-mini-128k-instruct操控Chrome完成数据采集
1. 为什么选择OpenClaw做浏览器自动化?
去年我在做一个市场调研项目时,需要从几十个网页中提取产品参数和价格信息。传统爬虫遇到动态加载的页面就束手无策,而手动复制粘贴又太耗时。正当我纠结时,同事推荐了OpenClaw这个"能像人一样操作浏览器"的工具。
与常规爬虫工具不同,OpenClaw的核心优势在于:
- 真实浏览器环境:直接操控Chrome浏览器,能处理JavaScript渲染的动态内容
- 自然语言交互:通过Phi-3这样的语言模型理解我的采集需求
- 灵活调整能力:遇到页面结构变化时,可以即时修改采集策略
实际使用后发现,它特别适合采集需要登录、有反爬机制、或者结构不规则的网页数据。下面分享我的具体实践过程。
2. 环境准备与基础配置
2.1 安装浏览器控制技能
OpenClaw本身不包含浏览器控制功能,需要先安装对应的skill:
clawhub install browser-automation安装完成后,在~/.openclaw/openclaw.json中会出现新的技能配置段:
"skills": { "browser-automation": { "chromePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "headless": false } }这里我特意将headless设为false,方便观察自动化过程。实际稳定运行后可改为true。
2.2 连接Phi-3-mini模型
在星图平台部署好Phi-3-mini-128k-instruct镜像后,修改模型配置:
"models": { "providers": { "phi3-mini": { "baseUrl": "http://你的服务器IP:8000/v1", "api": "openai-completions", "models": [{ "id": "phi-3-mini-128k-instruct", "name": "Phi-3 Mini Instruct" }] } } }测试连接是否成功:
openclaw models test phi-3-mini-128k-instruct3. 数据采集实战:电子产品比价
3.1 定义采集任务
假设我们需要从电商网站采集某款笔记本电脑的信息,传统方法需要:
- 分析页面DOM结构
- 编写XPath或CSS选择器
- 处理分页逻辑
而用OpenClaw只需要用自然语言描述需求:
"请打开京东搜索'联想小新Pro16',收集前3页商品的价格、店铺名称和评论数,排除广告商品,结果保存为CSV"
3.2 任务执行过程拆解
OpenClaw+Phi-3-mini的实际工作流程如下:
- 页面导航:自动打开Chrome访问京东首页
- 搜索操作:在搜索框输入关键词并回车
- 元素识别:
- 定位商品卡片区域
- 区分正常商品和广告位
- 数据提取:
- 价格(通常位于class包含"price"的span)
- 店铺名(通常在"shop"相关的a标签)
- 评论数(数字+"评价"文字组合)
- 翻页处理:点击下一页直到完成3页采集
- 数据保存:将结果整理为结构化CSV
3.3 关键代码实现
通过OpenClaw的Web控制台,可以实时观察和调整自动化流程。以下是核心操作的代码片段:
// 页面导航指令 await browser.goto('https://www.jd.com'); // 搜索操作 const searchInput = await browser.findElement('input.search-input'); await searchInput.type('联想小新Pro16'); await searchInput.press('Enter'); // 数据采集 const items = []; for (let page = 1; page <= 3; page++) { const cards = await browser.findElements('.gl-item:not(.js-ad)'); for (const card of cards) { const price = await card.$eval('.p-price strong', el => el.textContent.trim()); const shop = await card.$eval('.p-shop a', el => el.title); const comments = await card.$eval('.p-commit a', el => el.textContent); items.push({ price, shop, comments }); } if (page < 3) { await browser.click('.pn-next'); await browser.waitForNavigation(); } } // 导出CSV const csv = items.map(item => `${item.price},${item.shop},${item.comments}` ).join('\n'); fs.writeFileSync('result.csv', csv);4. 实际应用中的经验与技巧
4.1 处理动态加载内容
遇到无限滚动的页面时,传统爬虫很难判断何时加载完成。我的解决方案是:
let prevHeight = 0; let currentHeight = await browser.evaluate(() => document.body.scrollHeight); while (prevHeight < currentHeight) { await browser.evaluate(() => window.scrollTo(0, document.body.scrollHeight)); await browser.waitForTimeout(2000); // 等待加载 prevHeight = currentHeight; currentHeight = await browser.evaluate(() => document.body.scrollHeight); }4.2 应对反爬机制
当遇到验证码或访问频率限制时,可以:
- 降低操作速度:
browser.setActionDelay(1500); // 每个操作间隔1.5秒- 随机化操作模式:
await browser.humanType('搜索词', {speed: 'medium'}); // 模拟人工输入- 使用代理IP:
"browser-automation": { "proxy": "socks5://127.0.0.1:1080" }4.3 数据清洗策略
采集到的数据往往需要后处理,我通常让Phi-3-mini协助完成:
"请将以下文本中的价格数字提取出来:'¥5,299起' → 5299"
模型可以很好地处理这类半结构化数据的标准化。
5. 效果评估与替代方案对比
经过两周的实际使用,这个方案展现出独特优势:
| 维度 | 传统爬虫 | OpenClaw+Phi-3方案 |
|---|---|---|
| 开发速度 | 需要编写复杂解析逻辑 | 自然语言描述需求即可 |
| 动态内容支持 | 有限 | 完整支持 |
| 反爬绕过能力 | 依赖技术手段 | 模拟真人操作 |
| 维护成本 | 页面改版需重写解析 | 模型自动适应变化 |
| 适用场景 | 结构化数据采集 | 复杂交互场景 |
特别值得一提的是,当目标网站改版时,传统爬虫需要重新分析DOM结构,而OpenClaw方案只需要调整自然语言指令即可快速适应。
6. 个人实践建议
经过这个项目,我总结了几个关键经验:
适合使用OpenClaw的场景:
- 需要登录后才能访问的数据采集
- 页面结构复杂、元素定位困难的网站
- 需要模拟点击、滚动等交互操作的场景
- 快速验证阶段的临时数据需求
需要谨慎的情况:
- 大规模批量采集(Token消耗大)
- 对采集速度要求极高的场景
- 涉及敏感数据的操作(存在安全风险)
建议初次使用时从小任务开始,逐步熟悉浏览器的控制方式和模型的响应特点。遇到问题时,OpenClaw的实时操作预览功能非常有用,可以直观看到自动化过程的每个步骤。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
