在 AI 智能体开发领域,ClawHub 是一个汇集了海量实用技能(Skills)的平台,涵盖工具调用、数据处理、自动化操作等各类优质能力。为了方便大家快速检索、分析这些技能资源,今天分享一篇纯 Python 实战教程,无需复杂框架,一键抓取 ClawHub 全站 Skills 数据,并保存为结构化 CSV 文件。
一、核心思路
- 分析接口:ClawHub 采用分页接口加载 Skills 数据,直接请求后端 API 比解析 HTML 更高效;
- 循环分页:遍历所有页码,直到无数据返回为止;
- 数据清洗:提取技能 ID、名称、描述、作者、分类、创建时间等核心字段;
- 持久化存储:将数据保存为 CSV 格式,方便后续 Excel 查看、数据分析。
二、环境准备
仅需安装 2 个基础库,执行命令安装:
bash
运行
pip install requests pandas
三、完整爬虫代码
python
运行
import requests
import pandas as pd
import time
# ===================== 配置参数 =====================
BASE_URL = "https://api.clawhub.com/skills" # ClawHub Skills 核心接口
PAGE_SIZE = 20 # 每页数据量(接口默认值)
OUTPUT_FILE = "clawhub_all_skills.csv" # 输出文件名
DELAY = 1 # 请求间隔(秒),避免请求过快被限制
# ====================================================
def fetch_all_clawhub_skills():
"""抓取 ClawHub 所有 Skills 数据"""
all_skills = []
page_num = 1
print("🚀 开始抓取 ClawHub Skills 数据...")
while True:
try:
# 构造请求参数
params = {
"page": page_num,
"size": PAGE_SIZE
}
# 发送 GET 请求
response = requests.get(BASE_URL, params=params, timeout=10)
response.raise_for_status() # 抛出请求异常
data = response.json()
# 提取当前页技能列表
skills_list = data.get("data", {}).get("records", [])
if not skills_list:
print(f"\n📌 第 {page_num} 页无数据,抓取完成!")
break
# 清洗核心字段(按需增减)
for skill in skills_list:
skill_info = {
"技能ID": skill.get("id", ""),
"技能名称": skill.get("name", ""),
"技能描述": skill.get("description", "").replace("\n", " ").replace("\r", ""),
"作者": skill.get("author", ""),
"分类": skill.get("category", ""),
"标签": ", ".join(skill.get("tags", [])),
"创建时间": skill.get("createTime", ""),
"更新时间": skill.get("updateTime", ""),
"点赞数": skill.get("likeCount", 0),
"下载数": skill.get("downloadCount", 0),
"技能链接": f"https://clawhub.com/skill/{skill.get('id', '')}"
}
all_skills.append(skill_info)
print(f"✅ 成功抓取第 {page_num} 页,当前累计:{len(all_skills)} 条")
page_num += 1
time.sleep(DELAY) # 友好延时
except Exception as e:
print(f"❌ 第 {page_num} 页抓取失败:{str(e)}")
time.sleep(DELAY * 2)
continue
return all_skills
def save_to_csv(skills_data, output_path):
"""保存数据到 CSV 文件"""
if not skills_data:
print("⚠️ 无数据可保存")
return
df = pd.DataFrame(skills_data)
df.to_csv(output_path, index=False, encoding="utf-8-sig")
print(f"\n🎉 数据保存成功!文件路径:{output_path}")
print(f"📊 总抓取技能数量:{len(skills_data)} 条")
if __name__ == "__main__":
# 执行抓取
skills_data = fetch_all_clawhub_skills()
# 保存文件
save_to_csv(skills_data, OUTPUT_FILE)
四、代码核心说明
- 接口适配
- 目标接口:
https://api.clawhub.com/skills,支持page(页码)和size(每页条数)参数; - 数据结构:接口返回
records数组,包含所有 Skills 详情。
- 目标接口:
- 数据清洗
- 剔除换行符、格式化标签列表,保证 CSV 打开无乱码;
- 自动生成技能详情页链接,直接点击即可访问。
- 防限制处理
- 添加
time.sleep(DELAY)请求间隔,模拟正常访问; - 异常捕获 + 重试机制,避免网络波动导致程序中断。
- 添加
- 输出格式
- 编码使用
utf-8-sig,Excel 打开无中文乱码; - 包含 11 个核心字段,覆盖技能全量信息。
- 编码使用
五、运行效果
执行代码后,控制台会实时打印抓取进度:
plaintext
🚀 开始抓取 ClawHub Skills 数据...
✅ 成功抓取第 1 页,当前累计:20 条
✅ 成功抓取第 2 页,当前累计:40 条
...
📌 第 X 页无数据,抓取完成!
🎉 数据保存成功!文件路径:clawhub_all_skills.csv
📊 总抓取技能数量:XXX 条
运行结束后,会在当前目录生成 clawhub_all_skills.csv 文件,用 Excel/WPS 直接打开即可查看所有 Skills 数据。
六、注意事项
- 合规使用:本代码仅用于学习交流,请勿用于商业用途,遵守 ClawHub 平台规则;
- 请求频率:不要调低
DELAY参数,避免请求过快被平台封禁 IP; - 接口变更:若平台接口更新,只需修改
BASE_URL和数据提取字段即可适配。
七、扩展玩法
- 数据可视化:结合 Matplotlib/Seaborn 绘制技能分类、点赞数排行榜;
- 定时更新:搭配定时任务,每日自动抓取最新 Skills 数据;
- 数据库存储:将 CSV 数据导入 MySQL/PostgreSQL,搭建本地技能库。
总结
- 这是一套开箱即用的 ClawHub Skills 爬虫,无需额外配置,直接运行即可;
- 代码轻量化、易修改,适合新手学习 Python 网络请求、数据清洗、文件存储;
- 抓取的数据结构化完整,可直接用于 AI 技能分析、资源整理等场景。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)