葫芦流 · 术语表

概念

葫芦流如何工作——不要求你有爬虫经验。

一切都在工作流里:画布上的节点用箭头相连。你点运行(或调度触发)时,系统按顺序执行节点,沿箭头传递数据行。不能做成环(A→B→A);有环会被拒绝。

建议在《入门》之后阅读,或一边配编辑器一边当术语表查。每节说明是什么、为什么重要、去哪里点。

类比:工作流是菜谱;节点是步骤;边是「把碗递给下一步」;运行是做一次菜;数据集是贴好标签、会更新的冰箱格;额度是本月套餐允许多少份出餐。

约 10 分钟通读 读完后能听懂编辑器与邮件里的词
  1. 工作流
  2. 节点
  3. 运行
  4. 数据集

核心对象

工作流

工作流是你命名的项目。它保存图(节点+边)、状态(active/paused)以及可选的间隔分钟数。带间隔的启用工作流会被后台 worker 调度。暂停的不会自动跑,但仍可随时手动运行。

interval_minutes 示例:1440=每天,60=每小时(视套餐),空/null=仅手动。设置了间隔时,一次运行尝试后 next_run_at 会按间隔前进。

例子:「每日商品列表」,status=active,interval=1440。

控制台 → 工作流。API:GET/POST /api/v1/workflows。

节点

节点是画布上的一步。共四类:scrape(读页面)、url_gen(造 URL 列表)、store(写表)、notify(变更发信)。每个节点有 id(如 s1)、type 与 config。

抓取、通知、URL 生成可存成「工作流 → 节点」里的预设。存储总是在具体工作流上配置,因为它指向某张数据集。

例子:一个列表抓取 + 一个名为「商品」的存储。

打开工作流编辑器,或「工作流 → 节点」管理预设。

运行

运行是整张图执行一次。状态为 ok 或 error。每个节点写入带 input/output/error 的节点运行记录。失败也会保留记录,方便看哪一步断了。

控制台运行与 API POST …/run 都会等到图结束。改配置前先打开运行详情检查 items。

例子:运行 #42:抓取 ok(18 条),存储 ok(18 次 upsert)。

工作流编辑器 → 运行历史。API:GET …/runs 与 …/runs/{id}。

数据集

数据集是你账号下的逻辑表,由存储节点写入。行按 key_fields 哈希做 upsert:相同键更新,新键插入。默认键是 url、link——你几乎总应显式指定商品 URL。

可在控制台浏览、用 API 分页,或导出 CSV/JSON(大表有上限)。列在首次成功写入后出现。

例子:数据集「products」,列 title/price/url,一次运行后 120 行。

控制台 → 数据集。API:GET /api/v1/datasets、…/rows、…/export。

预设

预设是带名称的已保存 scrape/notify/url_gen 配置。可拖到其他工作流,避免重复发现。抓取预设必须已含勾选字段。

预设本身不占配额;配额在抓取节点出现在已保存工作流图上时才计算。

例子:预设「商店列表抓取」用在两个工作流上。

工作流 → 节点,或从节点配置保存。API:/api/v1/node-presets。

Graph JSON

画布底层是 JSON:nodes: [{id, type, config}] 与 edges: [{from, to}]。from 是上游节点 id。API 写入用 graph;响应里可能叫 graph_json。

不要用 source/target,要用 from 与 to。有环会拒绝。通常在可视化编辑;API 指南演示如何用 curl PATCH。

例子:边 {from:"s1", to:"st1"} 表示抓取输出进入存储。

四类节点

抓取

抓取节点打开网页并变成行(items)。mode=list 表示「这一页有多张卡片/多行」。mode=detail 表示「一页=更丰富的一行」,常接在列表抓取传出的商品链接之后。用 requirement 描述列,再保留发现到的 fields。

运行成功时,抓取节点每实际请求 1 个网页扣 1 额度。默认每次运行最多处理 20 个 URL。列表→详情时,用 input_field 指定装下一跳 URL 的列。

例子:在 /catalog?page=1 做列表抓取保留 title/price/url;详情抓取读该 url 取 description。

URL 生成

URL 生成器不打开页面,只为下游抓取构造 URL 列表。range 模式用模板填充,如 https://example.com/list?page={page}。list 模式在不是简单数字序列时,每行粘贴一个 URL。

输出始终是 [{url:"…"}] 形态的 items。单节点最多 500 条。不占配额。只应连到抓取(通常 list 模式)。

例子:把目录第 1–10 页送进一个抓取节点。

在画布添加 URL 生成;应用前先预览数量。

通知

通知在触发条件满足时发邮件,并与同一通知节点上次运行比较。when=new 只发上次没有的行键(url/link/id/title)。when=field_change 比较 watch_fields(如 price)。其他 when 对整份 items 哈希,有变化就发。

email 默认账号邮箱。节点测试可 dry-run 不发信。工作流通知在 v1 为邮件(Webhook 可能出现在任务/套餐的其他位置)。

例子:每日运行;仅当已有商品 URL 的价格变化时发信。

运行与计费

额度

套餐按月(或年付 ×12)发放额度。抓取节点每次实际请求网页扣 1 额度。保存图不扣。触顶后升级或等下个周期。

剩余额度不足时运行返回 HTTP 402。仅保存不消耗额度。

例子:免费版 20 额度;列表抓取请求 3 个翻页 URL 扣 3 额度。

调度

后台 worker 查找 next_run_at 到期的启用工作流。若设置了 interval_minutes,一次运行尝试后 next_run_at ≈ 现在 + 间隔。status=paused 时完全跳过。

无论调度如何都可以手动运行。还在调字段时请保持暂停,以免突然收到邮件。

例子:启用 + 1440 分钟 → 大约每天自动跑一次。

接下来

术语清楚后,去配真实节点,或继续看入门。