ferret

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

开源 🏷️完全免费 ✅ 目前可打开 自动化工作流 🍴 复刻 324 🐛 待处理 10 👀 关注 92
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 6025
维护状态 较活跃
是否开源 开源
定价模式 🏷️完全免费 开源项目,Apache-2.0 许可证,完全免费,无付费版本。

项目预览

ferret 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类自动化工作流
开发团队MontFerret
定价模式🏷️完全免费
价格说明开源项目,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 星标★ 6025
上线时间2018-08-23 00:00:00
代码更新2026-11-02
仓库体积34.2 MB
本站数据更新2026-11-09
维护状态较活跃
收录时间2026-08-10
浏览次数5

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-10 · 当前星标 ★ 6025

使用教程

ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。

难度:进阶 约 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

上一篇:pydoll

下一篇:workflow-use

同类项目推荐

terramate 开源

不改 Terraform 代码,就能编排多环境 IaC 并检测漂移

Open-source Infrastructure as Code (IaC) orchestration platform: GitOps workflows, o···

★ 3649 2026-09-24
Tiktok-Booster 开源

自动刷 TikTok 播放量,OCR 过验证码,解放双手

Automate TikTok view boosting with CAPTCHA bypass using Tesseract OCR.

★ 270 2026-09-29
n8n-as-code 开源

用代码和AI助手轻松构建、同步和管理n8n工作流

Give your AI agent n8n superpowers. 537 nodes with full schemas, 7,700+ templates, G···

★ 1653 2026-08-10
dev-proxy 开源

一条命令给接口注入故障,本地验证容错逻辑

Simulate API failures, throttling, and chaos — all from your command line.

★ 842 2026-10-04
gaia-workflow-engine 开源

拖拽画布编排 AI 工作流,无需代码即可部署

一个现代化的可视化规则引擎平台,用于编排复杂的 AI 工作流。在无限画布上设计、测试和部···

★ 220 2026-08-09
MoneyPrinter 开源

输入主题,自动生成一条YouTube短视频,省去剪辑烦恼

Automate Creation of YouTube Shorts using MoviePy.

★ 14172 2026-08-09
simulink-agentic-toolkit 开源

让AI智能体真正会读会改Simulink模型

The Simulink Agentic Toolkit gives your AI agent both the tools and the expertise to···

★ 1332 2026-10-08
redbook 开源

让 AI 智能体直接搜索和分析小红书内容

小红书 CLI — 搜索、分析、自动化 Xiaohongshu content. Built for AI agents.

★ 539 2026-08-09
n8n-playbook 开源

n8n 速查表+示例,快速搭建 AI 工作流

n8n-playbook: cheastsheet, examples

★ 116 2026-08-10