SuperAPI AI 工具集

apify-local-dev-loop

编程与开发

查看项目

更新于 10-16 06:20

技能介绍

用途:在部署到平台前于本地构建和测试 Apify Actor。Apify CLI(apify run)在本地模拟平台环境,创建 datasets、key-value stores、request queues 存储目录,形成无需云端的编辑→运行→检查循环。

前置条件:npm install -g apify-cli(全局 CLI)、已完成 apify login 并持有有效 token、Node.js 18+。CLI 使用 Apify API token 认证:执行一次 apify login(token 存于 ~/.apify/),或在 shell 中 export APIFY_TOKEN 用于非交互场景。本地 apify run 不需要认证,只有 apify push / apify call 才访问平台。切勿提交 token 或含明文 token 的 .env。

项目结构:.actor/actor.json(元数据与配置)、.actor/INPUT_SCHEMA.json(输入模式,在平台自动生成 UI)、src/main.ts(入口)、storage/(由 apify run 创建,应加入 git 忽略,含 datasets/default/、key_value_stores/default/、request_queues/default/)、package.json、tsconfig.json。

主要用法:使用 apify create my-actor 从模板创建项目(交互式),或 apify create my-actor --template project_cheerio_crawler_ts 指定模板;可选模板有 project_empty、project_cheerio_crawler_ts、project_playwright_crawler_ts、project_puppeteer_crawler_ts。随后编辑 actor.json、定义 INPUT_SCHEMA.json、在 src/main.ts 编写爬虫。

运行:apify run 使用 storage/key_value_stores/default/INPUT.json 中的默认输入;apify run --input='{"startUrls":[{"url":"https://example.com"}],"maxPages":5}' 从命令行传输入;用 cat storage/datasets/default/*.json | jq '.' 查看结果。创建持久 INPUT.json 可让多次运行复用同一输入。追求更快内循环可用 tsx watch 直接运行入口点代替 apify run。

本地存储映射:默认 dataset 位于 storage/datasets/default/,通过 Actor.pushData() 访问;默认 KV store 位于 storage/key_value_stores/default/,通过 Actor.setValue()/Actor.getValue() 访问;默认 request queue 位于 storage/request_queues/default/,由爬虫管理。

输出:由模板生成的可行 Actor 项目、可本地校验并生成平台 UI 的类型化输入模式、写入 storage/datasets/default/ 的 JSON 数据行、镜像平台存储的本地 storage/ 目录树、watch 模式开发循环与模拟 SDK 边界的 Vitest 测试。

常见错误:apify: command not found(未装 CLI,运行 npm i -g apify-cli)、INPUT.json not found(未提供输入,创建 storage/key_value_stores/default/INPUT.json)、Cannot find module 'apify'(未装 SDK,运行 npm install apify crawlee)、Dockerfile not found(缺少 actor 配置,运行 apify create 或创建 .actor/actor.json)。

限制:本地运行不涉及平台认证与云端能力;资料未提供更多收费、平台支持或性能数据。