知乎数据获取 | Zhihu Data Fetcher

支持三级认证降级的知乎数据获取工具,可自动切换登录态、Cookie或备用源。

已扫描
适合谁
内容研究员、数据分析师
不适合谁
无技术基础的普通用户、需要高频率稳定接口的企业级应用
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @noah-1106/zhihu-fetcher

Skill 说明

命令、参数、文件名以原文为准

知乎数据获取 | Zhihu Data Fetcher

极简设计的知乎数据抓取工具,支持三级认证降级,确保在各种环境下都能稳定获取数据。


三级认证机制 | Three-Level Auth Mechanism

优先级1: 浏览器配置
    使用 OpenClaw 浏览器已登录的状态
    ↓ 失败或无登录状态
优先级2: 文件 Cookie
    使用配置文件中固化的 Cookie
    ↓ 失败或无配置
优先级3: 备用源
    使用无需认证的备用数据源

快速开始 | Quick Start

# 1. 登录知乎
browser open https://www.zhihu.com
# 完成登录

# 2. 获取数据并保存到数据库
cd scripts
python3 save_to_db.py 50
# 1. 编辑配置文件,填入 Cookie
vim config/fallback-sources.json

# 2. 直接运行(无需浏览器)
python3 scripts/save_to_db.py 50

方式3: 仅使用备用源 | Method 3: Fallback Source Only

# 无需任何认证
python3 scripts/save_to_db.py
# 会自动降级到备用源

数据库使用 | Database Usage

初始化数据库 | Initialize Database

python3 scripts/init_db.py

采集并保存 | Collect and Save

# 采集50条热榜并保存到数据库
python3 scripts/save_to_db.py 50

# 显示结果:
# ✅ 完成!
#    发现:50 条
#    新增:50 条
#    更新:0 条

查询数据 | Query Data

# 查看今天的热榜
python3 scripts/query.py today

# 查看指定日期
python3 scripts/query.py date 2026-03-15

# 查看最近7天统计
python3 scripts/query.py stats 7

# 查看抓取日志
python3 scripts/query.py logs

数据库结构 | Database Schema

-- 文章表
CREATE TABLE articles (
    id TEXT PRIMARY KEY,              -- 文章ID(URL的SHA256)
    platform TEXT DEFAULT 'zhihu',    -- 平台标识
    article_type TEXT DEFAULT 'hot',  -- 类型:hot/search
    rank INTEGER,                     -- 排名
    title TEXT NOT NULL,              -- 标题
    url TEXT NOT NULL,                -- 链接
    heat INTEGER,                     -- 热度值
    author TEXT,                      -- 作者
    summary TEXT,                     -- 摘要
    published_at INTEGER,             -- 发布时间
    fetched_at INTEGER,               -- 抓取时间
    fetch_date TEXT,                  -- 抓取日期(YYYY-MM-DD)
    raw_data TEXT,                    -- 原始JSON
    UNIQUE(url, fetch_date)           -- 同一天同一URL只存一次
);

-- 抓取日志表
CREATE TABLE fetch_logs (...);

编辑 config/fallback-sources.json

{
  "cookie": {
    "zhihu_session": "你的_session值",
    "z_c0": "你的_z_c0值",
    "_xsrf": "你的_xsrf值",
    "_zap": "...",
    "d_c0": "..."
  }
}

获取 Cookie 的方法:

  1. 在浏览器中打开 https://www.zhihu.com 并完成登录
  2. 按下 F12 打开开发者工具 → Application/Storage → Cookies
  3. 复制对应字段的值

使用示例 | Usage Examples

# 获取30条热榜
node snippets/fetch-hot.js 30

# 保存到文件
node snippets/fetch-hot.js 50 ./zhihu-hot.json

# 自定义频率限制(5秒/次)
RATE_LIMIT=5000 node snippets/fetch-hot.js

在报告中使用 | Use in Reports

const { fetchWithFallback } = require('./snippets/fetch-hot.js');

const data = await fetchWithFallback({
  limit: 30,
  rateLimitMs: 2000
});

// 自动选择最佳认证方式
console.log('认证方式:', data.meta.auth_method);
// browser_profile | file_cookie | fallback_source

report.zhihu = data.data;

文件结构 | File Structure

zhihu-fetcher/
├── SKILL.md                    # 本文档
├── config/
│   └── fallback-sources.json   # 配置:Cookie + 备用源
├── data/
│   ├── zhihu.db                # SQLite数据库(自动创建)
│   └── index.html              # HTML可视化报告(自动生成)
├── scripts/
│   ├── init_db.py              # 数据库初始化
│   ├── db.py                   # 数据库操作模块
│   ├── save_to_db.py           # 采集并保存到数据库
│   ├── query.py                # 数据查询工具
│   └── generate_html.py        # HTML可视化报告生成
└── snippets/
    ├── hot.js                  # 浏览器提取代码
    ├── search.js               # 搜索提取代码
    ├── rate-limiter.js         # 频率限制器
    ├── cookie-manager.js       # Cookie 管理
    ├── fallback.js             # 备用源获取
    ├── fetch-hot.js            # 完整热榜获取(三级认证)
    └── test-simple.js          # 测试脚本

数据输出 | Data Output

{
  "meta": {
    "source": "zhihu",
    "fetch_time": "2026-03-15T08:30:00.000Z",
    "mode": "hot",
    "auth_method": "file_cookie",
    "rate_limited": true,
    "count": 30
  },
  "data": [
    {
      "rank": 1,
      "title": "...",
      "heat": 4030000,
      "url": "..."
    }
  ]
}

生成HTML可视化报告 | Generate HTML Visualization Report

# 生成可视化HTML报告
python3 scripts/generate_html.py

# 打开查看
open data/index.html

HTML报告功能 / HTML Report Features:

  • 📅 日期筛选 / Date Filter - 选择具体日期或日期范围
  • 🔍 关键词搜索 / Keyword Search - 实时搜索标题
  • 🔥 热度筛选 / Heat Filter - 按最小热度值筛选
  • 🏆 排名标识 / Ranking Display - Top 3 项使用特殊颜色标识
  • 📊 数据统计 / Data Stats - 实时显示当前筛选结果数量

直接查询数据库 | Direct Database Query

# 进入数据库 / Enter database
sqlite3 data/zhihu.db

# 查看今天的数据 / View today's data
SELECT rank, title, heat FROM articles
WHERE fetch_date = date('now')
ORDER BY rank LIMIT 10;

# 查看最近7天每天采集的数据条数 / View daily count for last 7 days
SELECT fetch_date, COUNT(*) FROM articles
WHERE fetch_date >= date('now', '-7 days')
GROUP BY fetch_date ORDER BY fetch_date DESC;

# 查看抓取日志 / View fetch logs
SELECT * FROM fetch_logs ORDER BY started_at DESC LIMIT 5;

扩展备用源 | Extend Fallback Sources

请编辑 config/fallback-sources.json 文件:

{
  "fallbacks": [
    {
      "name": "zhihu-hot-hub",
      "url": "...",
      "type": "markdown",
      "priority": 1
    },
    {
      "name": "another-api",
      "url": "https://api.example.com/zhihu-hot.json",
      "type": "json",
      "priority": 2
    }
  ]
}

认证优先级配置 | Auth Priority Configuration

如需调整认证方式的优先级,请修改配置文件:

{
  "auth": {
    "priority": [
      "file_cookie",        // 优先使用固化 Cookie
      "browser_profile",    // 其次使用浏览器配置文件
      "fallback_source"     // 最后使用备用数据源
    ]
  }
}

测试状态 | Test Status

已通过测试 / Tested

  • Browser Profile:需要手动登录
  • File Cookie:需配置后方可测试
  • Fallback Source:✅ 成功获取 26 条数据
# 测试备用源 / Test fallback source
node snippets/test-simple.js

注意事项 | Notes

  1. Cookie 有效期 / Cookie Expiration - 固化 Cookie 可能过期,建议定期更新
  2. 频率限制 / Rate Limiting - 默认请求间隔为 2 秒,避免触发反爬机制
  3. 备用源延迟 / Fallback Delay - GitHub 提供的源可能存在约 1 小时的延迟
  4. 安全性 / Security - 请勿将包含 Cookie 的配置文件提交至 Git 仓库

适用场景 | Use Cases

场景 / Scenario推荐方式 / Recommended原因 / Reason
日常开发 / Daily devBrowser Profile数据最完整、稳定性高
CI/CD 自动化 / AutomationFile Cookie无需交互,可重复执行
应急备用 / EmergencyFallback Source无需认证,快速可用

设计对比 | Design Comparison

方案 / Solution复杂度 / Complexity可靠性 / Reliability适用场景 / Use Case
本方案 / This solution低 / Low高(支持三级降级)/ High (3-level fallback)研究类数据采集
小红书式 / XHS-style高 / High高 / High运营自动化场景
纯 API / Pure API中 / Medium中 / Medium生产环境部署
N1
@noah-1106

已收录 1 个 Skill

相关推荐