ferret

用声明式语言轻松提取网页数据,告别繁琐爬虫代码。

Ferret 是一个声明式的数据自动化语言及 Go 运行时,旨在简化结构化数据提取工作流。它通过自定义 DSL 让用户以声明式方式描述从网页或文档中提取数据的逻辑,底层基于 Chrome DevTools Protocol 驱动浏览器自动化,支持 HTML 解析、网络请求模拟等。Ferret 解决了传统爬虫和数据处理脚本编写复杂、维护困难的问题,提供简洁的语法和强大的内置函数,使开发者能快速构建可复用的数据提取管道。其核心能力包括:声明式查询、浏览器自动化、数据清洗与转换、并发执行等。项目用 Go 实现,性能优异,适合需要大规模数据采集和处理的场景。

开源 free 自动化工作流
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 6012
维护状态 活跃
是否开源 是
定价模式 free

项目数据

分类自动化工作流
开发团队MontFerret
所属国家
定价模式free
价格说明开源项目,Apache-2.0 许可证,完全免费,无付费版本。
访问状态
是否开源是
开源协议Apache-2.0
主要语言Go
技术栈/模型browser-automation,chrome-devtools-protocol,data-automation,data-extraction,dsl,go,golang,golang-library,html,library,query-language,runtime,web-crawling,web-scraping
GitHub 星标★ 6012
30天Star增速
HF 下载量
上线时间2018-08-23 00:00:00
最近更新2026-09-22 00:00:00
维护状态活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-10
浏览次数4

使用教程

难度:进阶 约 10 分钟 部署方式:库/依赖 6 步

环境要求

  • 已安装 Go 工具链,终端可执行 go 命令
  • 可访问 github.com 以拉取 Go 模块
  • 明确使用场景:新项目用 Native v2 API,已有 v1 集成走 compat 迁移
  • 注意当前分支是 v2 alpha,稳定版请使用 Ferret v1

安装与启动步骤

  1. 1确认 Go 环境

    先确认本机已装 Go 且命令可用,版本过旧可能无法拉取 v2 模块。

    go version
  2. 2初始化 Go 模块

    在空目录里创建自己的 Go module,作为后续引入 Ferret 的宿主工程。

    go mod init ferret-demo
  3. 3拉取 Ferret v2

    按 README 的 Getting started 使用 go get 引入 v2 模块,会自动写入 go.mod。

    go get github.com/MontFerret/ferret/v2@latest
  4. 4编写引擎入口

    新项目用 ferret.New(opts...) 做 Native 嵌入;使用 github.com/MontFerret/api 的集成改用 uapi.New(opts...) 创建并持有引擎。

  5. 5整理并编译

    整理依赖树并编译工程,确认引入的模块路径与 API 可正常解析。

    go mod tidy
    go build ./...
  6. 6可选:试用新语法

    README 提供在线 Playground,可先在上面验证 v2 查询语法再落到代码里。

关键配置

配置项必填说明示例
opts...否ferret.New / uapi.New 的可变参数,README 未列出具体选项,需查阅文档ferret.New(opts...)

如何确认成功

go build ./... 编译无报错;代码中 ferret.New(opts...) 或 uapi.New(opts...) 能成功返回引擎实例。

常见问题

Q:应该用 v1 还是 v2?

A:当前分支是即将发布的 Ferret v2,官方标注为 alpha;生产环境建议先用稳定版 v1,新项目可试 v2。

Q:已有 v1 集成如何迁移到 v2?

A:优先使用 compat 模块,它被官方推荐作为现有 v1 集成的第一步迁移方式,可降低改动量。

Q:uapi.New 和 uapi.Wrap 有什么区别?

A:New 会创建并持有 Native 引擎,runtime Close 时一并关闭它;Wrap 只是借用已有引擎,其 Close 是空操作,不销毁引擎。

Q:关闭顺序有什么要求?

A:应先结束工作(settle work),并关闭 session 与 plan,然后再关闭持有它们的 runtime 或借用的引擎。

注意事项

  • 本项目 README 只给出 go get 形式的安装说明,没有 CLI、Docker 或配置文件相关命令,本教程未虚构任何参数与端口。
  • Ferret v2 仍处于 alpha 阶段,语法与 API 可能变动,重要项目请评估稳定性或使用 v1。
  • CLI、测试运行器 lab、Web worker 均为独立仓库,使用前请单独查看对应仓库文档。
  • 引擎、session、plan 的生命周期需按 README 描述的顺序释放,避免资源泄漏。

核心亮点

  • 声明式 DSL 大幅降低数据提取脚本编写门槛,代码可读性强
  • 基于 Chrome DevTools Protocol,能处理动态渲染的现代网页
  • Go 运行时性能出色,支持并发执行,适合大规模数据抓取

不足之处

  • 文档和示例相对较少,学习曲线较陡
  • 依赖浏览器环境,部署和资源占用较高

适用场景

  • 构建结构化数据采集管道,如商品信息、新闻聚合
  • 自动化测试中提取页面关键数据
  • 数据迁移和集成场景中从旧系统提取数据

替代项目

Colly、GoQuery、Scrapy

项目介绍

ferret 是自动化工作流领域的开源项目,由 MontFerret 开发,2018 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(6,012)位列前 8%,在自动化工作流分类的 503 个项目里位列前 15%。

项目目前处于活跃维护状态,最近一次代码更新于 2026-09-22。Apache-2.0 许可证,完全免费,无付费版本。从国内网络环境看,可直接访问。

它主要面向的使用场景是:构建结构化数据采集管道,如商品信息、新闻聚合。同类可对比的替代方案包括 Colly、GoQuery、Scrapy。

上一篇:pydoll

下一篇:workflow-use

同类项目推荐

n8n 开源

拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。

Fair-code workflow automation platform with native AI capabilities. Combine visual b···

★ 205700 2026-08-10
feishu-docx 开源

让 AI 代理轻松读写飞书文档,双向转换 Markdown

Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exp···

★ 262 2026-08-09
robotcode 开源

让 Robot Framework 拥有现代 IDE 体验,调试、补全、运行一气呵成。

Open Source Toolkit for Robot Framework, providing Language Server Protocol support,···

★ 301 2026-08-10
puppeteer 开源

用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。

JavaScript API for Chrome and Firefox

★ 95609 2026-08-10