OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  tabstack-extractor:使用 Tabstack 技术从网站中提取高价值结构化数据

tabstack-extractor:使用 Tabstack 技术从网站中提取高价值结构化数据

 
  basil ·  2026-02-04 13:51:27 · 17 次点击  · 0 条评论  

名称: tabstack-extractor
描述: 使用 Tabstack API 从网站提取结构化数据。适用于需要抓取职位列表、新闻文章、产品页面或任何结构化网页内容的场景。提供基于 JSON 模式的数据提取和干净的 Markdown 转换。需要 TABSTACK_API_KEY 环境变量。


Tabstack Extractor

概述

此技能使用 Tabstack API 从网站提取结构化数据。它非常适合需要从招聘网站、新闻站点、产品页面或任何结构化内容中提取基于模式的一致数据的网页抓取任务。

快速开始

1. 安装 Babashka(如果需要)

# 选项 A:从 GitHub 安装(推荐用于共享)
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash

# 选项 B:从 Nix 安装
nix-shell -p babashka

# 选项 C:从 Homebrew 安装
brew install borkdude/brew/babashka

2. 设置 API 密钥

选项 A:环境变量(推荐)

export TABSTACK_API_KEY="你的_api_密钥_在这里"

选项 B:配置文件

mkdir -p ~/.config/tabstack
echo '{:api-key "你的_api_密钥_在这里"}' > ~/.config/tabstack/config.edn

获取 API 密钥:Tabstack 控制台 注册。

3. 测试连接

bb scripts/tabstack.clj test

4. 提取 Markdown(简单模式)

bb scripts/tabstack.clj markdown "https://example.com"

5. 提取 JSON(从简单开始)

# 使用简单模式开始(快速、可靠)
bb scripts/tabstack.clj json "https://example.com" references/simple_article.json

# 尝试更复杂的模式(可能较慢)
bb scripts/tabstack.clj json "https://news.site" references/news_schema.json

6. 高级功能

# 带重试逻辑的提取(重试 3 次,延迟 1 秒)
bb scripts/tabstack.clj json-retry "https://example.com" references/simple_article.json

# 带缓存的提取(24 小时缓存)
bb scripts/tabstack.clj json-cache "https://example.com" references/simple_article.json

# 从 URL 文件批量提取
echo "https://example.com" > urls.txt
echo "https://example.org" >> urls.txt
bb scripts/tabstack.clj batch urls.txt references/simple_article.json

核心功能

1. Markdown 提取

从任何网页提取干净、可读的 Markdown 格式内容。适用于内容分析、摘要生成或存档。

使用场景: 当你需要页面的文本内容,而不需要杂乱的 HTML 代码时。

示例用例:
- 提取文章内容以生成摘要
- 存档网页内容
- 分析博客文章内容

2. JSON 模式提取

使用 JSON 模式提取结构化数据。精确定义你所需的数据,并以一致的格式获取。

使用场景: 抓取职位列表、产品页面、新闻文章或任何结构化数据时。

示例用例:
- 从 BuiltIn/LinkedIn 抓取职位列表
- 从电商网站提取产品详情
- 收集具有一致元数据的新闻文章

3. 模式模板

为常见抓取任务提供预构建的模式。请参阅 references/ 目录中的模板。

可用模式:
- 职位列表模式(见 references/job_schema.json
- 新闻文章模式
- 产品页面模式
- 联系信息模式

工作流示例:职位抓取

按照此工作流抓取职位列表:

  1. 确定目标网站 - BuiltIn、LinkedIn、公司招聘页面
  2. 选择或创建模式 - 使用 references/job_schema.json 或自定义
  3. 测试提取 - 在单个页面上运行以验证模式是否有效
  4. 扩大规模 - 处理多个 URL
  5. 存储结果 - 保存到数据库或文件

职位模式示例:

{
  "type": "object",
  "properties": {
    "title": {"type": "string"},
    "company": {"type": "string"},
    "location": {"type": "string"},
    "description": {"type": "string"},
    "salary": {"type": "string"},
    "apply_url": {"type": "string"},
    "posted_date": {"type": "string"},
    "requirements": {"type": "array", "items": {"type": "string"}}
  }
}

与其他技能集成

与网页搜索结合

  1. 使用 web_search 查找相关 URL
  2. 使用 Tabstack 从这些 URL 提取结构化数据
  3. 将结果存储在 Datalevin 中(未来技能)

与浏览器自动化结合

  1. 使用 browser 工具导航复杂网站
  2. 提取页面 URL
  3. 使用 Tabstack 进行结构化提取

错误处理

常见问题及解决方案:

  1. 认证失败 - 检查 TABSTACK_API_KEY 环境变量
  2. 无效 URL - 确保 URL 可访问且正确
  3. 模式不匹配 - 调整模式以匹配页面结构
  4. 速率限制 - 在请求之间添加延迟

资源

scripts/

  • tabstack.clj - Babashka 中的主 API 包装器(推荐,包含重试逻辑、缓存、批量处理)
  • tabstack_curl.sh - Bash/curl 备用方案(简单,无依赖)
  • tabstack_api.py - Python API 包装器(需要 requests 模块)

references/

  • job_schema.json - 职位列表模板模式
  • api_reference.md - Tabstack API 文档

最佳实践

  1. 从小处着手 - 在扩大规模前先测试单个页面
  2. 遵守 robots.txt - 检查网站的抓取政策
  3. 添加延迟 - 避免对目标网站造成过大压力
  4. 验证模式 - 在示例页面上测试模式
  5. 优雅处理错误 - 为失败的请求实现重试逻辑

教学重点:如何创建模式

此技能旨在教会智能体如何有效使用 Tabstack API。关键在于学会为不同网站创建合适的 JSON 模式。

学习路径

  1. 从简单开始 - 使用 references/simple_article.json(4 个基本字段)
  2. 广泛测试 - 在多种页面类型上尝试模式
  3. 迭代改进 - 根据页面实际内容添加字段
  4. 优化 - 为提高速度移除不必要的字段

详细说明和示例请参阅 模式创建指南

应避免的常见错误

  • 模式过于复杂 - 从 2-3 个字段开始,而不是 20 个
  • 缺少字段 - 不要要求页面不存在的字段
  • 不进行测试 - 始终先用 example.com 测试,再用目标网站
  • 忽略超时 - 复杂模式耗时更长(45 秒超时)

Babashka 优势

为此技能使用 Babashka 提供以下优势:

  1. 单一二进制文件 - 易于共享/安装(GitHub 发布版、brew、nix)
  2. 快速启动 - 无需 JVM 预热,约 50 毫秒启动时间
  3. 内置 HTTP 客户端 - 无外部依赖
  4. Clojure 语法 - 对你(Wes)来说熟悉且富有表现力
  5. 重试逻辑和缓存 - 已内置到技能中
  6. 批量处理 - 支持多个 URL 的并行提取

示例用户请求

触发此技能的请求示例:
- “从 Docker 招聘页面抓取职位列表”
- “从这篇文章中提取主要内容”
- “从这个电商页面获取结构化产品数据”
- “从这个网站拉取所有新闻文章”
- “从这个公司页面提取联系信息”
- “从这 20 个 URL 批量提取职位列表”
- “获取此页面的缓存结果(避免 API 调用)”

17 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 21 ms
Developed with Cursor