一、引言

大模型的训练与优化离不开高质量的数据支撑。无论是用于微调的垂直领域数据,还是用于RAG(检索增强生成)的知识库构建,数据采集都是不可或缺的基础环节。然而,传统的手工采集方式效率低下,而网页端爬虫又难以覆盖移动端App中的海量数据——在移动互联网时代,大量有价值的数据已经不在网页端,而是沉淀在各类App内部。

自动化脚本平台提供了一套完整的App自动化解决方案,通过JavaScript脚本即可实现对移动端App的自动化操作与数据采集。平台内置了BigModel API,支持百度千帆、DeepSeek、豆包、千问等主流大语言模型的一键调用,让自动化脚本具备了AI能力。本文将讲解如何构建一套从数据采集、智能处理到存储归档的完整自动化数据采集流水线。

二、冰狐平台核心能力概览

冰狐智能辅助以JavaScript作为统一脚本语言,深度封装了一套开箱即用的API,涵盖网络请求、界面操作、设备管理、数据存储和大模型调用等能力。开发者无需处理底层复杂逻辑,即可快速构建自动化脚本。

平台的核心API体系主要包括以下几个方面:

网络请求API:提供httpGethttpPost等同步HTTP请求接口,返回统一的结构化对象(statedata字段),便于异常处理。

大模型调用API:通过BigModel构造函数和invoke方法,实现对大语言模型的一键调用。

设备操作API:提供getDeviceNamegetDeviceModel等设备信息获取接口,以及点击、滑动、截图等界面操作能力。

数据存储API:支持LocalData本地键值对存储和Excel文件操作,方便数据持久化。

定时任务API:支持基于Cron表达式的定时调度,实现数据采集的自动化周期性执行。

三、数据采集脚本的核心架构

一个完整的自动化数据采集脚本,通常包含以下五个核心模块:

3.1 数据源定位与界面操作

冰狐平台支持通过UI树查找控件元素,定位目标元素的text、id、className等属性,然后通过无障碍控件操作API进行定位和操作。对于非标准控件,平台还提供了图色识别能力。

function main() {
    // 打开目标App
    launchApp("目标应用名称");
    sleep(3000);
    
    // 通过文本定位并点击元素
    var target = text("数据列表").findOne();
    if (target != null) {
        target.click();
    }
}

3.2 数据抓取与网络请求

采集到的数据可以通过httpPost接口上报到后端服务,或直接存入本地存储。

function collectData() {
    // 模拟从界面采集数据
    var collectedData = {
        title: text("标题").findOne().text(),
        content: text("内容").findOne().text(),
        timestamp: new Date().getTime()
    };
    
    // 通过POST请求上报数据
    var res = httpPost(
        "https://your-api.com/data/collect",
        JSON.stringify(collectedData),
        "json"
    );
    
    if (res.state === "success") {
        console.log("数据上报成功");
    } else {
        console.log("上报失败:", res.data);
    }
}

3.3 大模型智能处理

采集到的原始数据往往需要进行清洗、分类、摘要等处理。冰狐的BigModel API可以让脚本在采集过程中实时调用大模型对数据进行智能处理。

前置配置:在调用大模型前,必须先在冰狐平台配置自定义数据,存储API Key和Secret。custom_data_keycustom_data_secret传入的是自定义数据中对应的键名,而非直接传入Key/Secret字符串,这是冰狐平台的安全设计。

function main() {
    // 创建大模型实例
    // type: 1=百度千帆, 2=DeepSeek, 3=豆包, 4=千问
    var bm = new BigModel(2, "my_deepseek_key", "", {
        model: "deepseek-chat",
        temperature: 0.3,
        maxTokens: 2048
    });
    
    // 采集原始数据
    var rawData = collectRawData();
    
    // 调用大模型进行数据清洗和摘要
    var prompt = "请对以下数据进行清洗和摘要提取,输出JSON格式:\n" + rawData;
    var result = bm.invoke(prompt);
    
    // 解析并存储处理后的数据
    var processedData = JSON.parse(result);
    saveToLocal(processedData);
}

invoke方法支持两种prompt格式:字符串格式适用于单次提问,数组格式支持多轮对话场景。

3.4 数据持久化存储

冰狐提供了多种数据存储方式:

LocalData本地存储:适用于配置信息和轻量级数据的持久化。

var localData = new LocalData();
localData.write("collected_count", 100, "integer");
var count = localData.read("collected_count", "integer");

Excel文件操作:适用于批量数据的结构化存储。

var excel = new Excel();
var openRes = excel.open("data_collection");
if (openRes) {
    excel.write(1, 1, "标题");
    excel.write(1, 2, "内容");
    excel.write(1, 3, "时间");
    excel.save();
    excel.close();
}

3.5 自动化调度执行

通过Cron表达式可以实现数据采集任务的定时自动执行。平台提供基于cron4j标准的Cron调度API,支持每日打卡、固定时段数据采集等长期自动化任务。

四、完整实战示例:App内容自动采集与智能摘要

下面是一个完整的实战脚本,演示如何从目标App中自动采集内容,并通过大模型生成摘要后存储:

function main() {
    // 1. 初始化大模型(DeepSeek)
    var bm = new BigModel(2, "deepseek_key", "", {
        model: "deepseek-chat",
        temperature: 0.3,
        maxTokens: 2048
    });
    
    // 2. 启动目标App
    launchApp("资讯阅读");
    sleep(3000);
    
    // 3. 循环采集列表数据
    var excel = new Excel();
    excel.open("collected_articles");
    
    var collectedCount = 0;
    var maxCount = 50;
    
    for (var i = 0; i < maxCount; i++) {
        // 定位文章列表项
        var item = className("android.widget.LinearLayout").findOne();
        if (item == null) break;
        
        // 提取标题和摘要
        var title = item.find(text("标题")).text();
        var content = item.find(text("内容")).text();
        
        // 调用大模型生成智能摘要
        var summary = bm.invoke(
            "请用50字以内总结以下内容:\n" + content
        );
        
        // 写入Excel
        excel.write(i + 1, 1, title);
        excel.write(i + 1, 2, summary);
        excel.write(i + 1, 3, new Date().toLocaleString());
        
        collectedCount++;
        
        // 滑动到下一项
        swipe(500, 800, 500, 300, 500);
        sleep(1000);
    }
    
    excel.save();
    excel.close();
    
    // 4. 上报采集统计
    var report = httpPost(
        "https://your-api.com/collect/report",
        JSON.stringify({ count: collectedCount, time: new Date().toISOString() }),
        "json"
    );
    
    console.log("采集完成,共采集", collectedCount, "条数据");
}

五、进阶能力:OpenAPI与云端调度

除了在移动端直接运行脚本,冰狐还提供了OpenAPI,允许开发者在自己的后端服务中调用平台功能。

获取访问Token

GET /api/get_token
参数:clientKey, clientSecret

远程执行设备脚本

GET /api/script/exe
参数:clientKey, accessToken, deviceId, scriptId

通过OpenAPI,可以将数据采集脚本集成到现有的后端系统中,实现批量设备管理、脚本远程下发、采集数据统一汇聚等能力。

六、注意事项与最佳实践

1. 合规与隐私:从App采集数据时,需遵守相关使用条款和政策,尊重数据所有者和用户的隐私。

2. 错误处理:所有网络请求都应检查state字段,对失败情况进行妥善处理。

3. 频率控制:避免过于频繁的请求,防止被目标服务限流或封禁。

4. 密钥安全:大模型的API Key和Secret应通过平台自定义数据存储,切勿硬编码在脚本中。

5. 脚本调试:在调试模式下,可从网页端进入「移动端」/「我的设备」,选择设备后点击LOG实时获取设备日志。

6. 设备保活:对于长期运行的定时采集任务,需确保设备处于「冰狐前台+屏幕休眠+通电」的状态,到达Cron指定时间时冰狐会自动通过wakeup()API唤醒屏幕执行任务。

七、结语

通过冰狐平台的API体系,开发者可以用简洁的JavaScript脚本构建起覆盖“数据采集→智能处理→存储归档→定时调度”全链路的自动化数据采集系统。平台内置的BigModel API让大模型能力与自动化脚本深度融合,实现了从“机械执行”到“智能处理”的升级。无论是为RAG系统构建知识库,还是为大模型微调准备训练数据,这套基于冰狐API的自动化方案都能大幅提升数据采集的效率与质量。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐