← 返回
未分类

豆瓣读书(无需登录)

豆瓣读书助手 — 抓取个人已读/想读/在读列表,输出CSV/JSON,支持全量同步、增量更新与RSS轻量同步
豆瓣读书助手 — 抓取个人已读/想读/在读列表,输出CSV/JSON,支持全量同步、增量更新与RSS轻量同步
fbfl
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 60
下载
💾 0
安装
1
版本
#latest

概述

Douban Books — 豆瓣读书助手

抓取豆瓣公开个人主页的读书数据(已读/想读/在读),输出为 CSV 或 JSON 文件,无需登录。

支持的能力

能力说明用户示例
----------------------
全量抓取从第一页到最后一页,完整抓取全部数据"同步我的豆瓣读书数据"
增量同步(翻页)逐页抓取,遇到已有书籍自动停止"检查豆瓣有什么新书"
RSS 增量同步通过 RSS 秒级获取最新动态,无需翻页"快速同步豆瓣新书"
查看统计展示各分类数量和基本信息"我的豆瓣读了多少本书"
年度报告按年份统计阅读量、月度分布、评分趋势"生成我的年度阅读报告"
导出 CSV/JSON生成文件,可指定路径和格式"导出豆瓣数据为JSON"

根据用户意图参考对应说明文件了解抓取逻辑和工作流。


快速开始

首次使用

Step 1:提供豆瓣用户 ID(必须)

每次使用前,需要先告知 AI 你的豆瓣用户 ID。如果你的豆瓣主页是 https://book.douban.com/people/example/,那么你的用户 ID 是 example

告诉 AI:"我的豆瓣 ID 是 XXX" 或直接给出主页链接。

Step 2:执行全量抓取

python scripts/fetch_douban.py --user <user_id> --output douban_books.csv

Step 3:等待完成

  • 已读:数量因人而异,约 5-8 分钟/1000 本
  • 想读:数量因人而异
  • 在读:数量因人而异

完成后文件保存在指定路径。


命令参考

# 全量抓取(首次使用)
python scripts/fetch_douban.py --user <id> --mode full

# 翻页增量同步
python scripts/fetch_douban.py --user <id> --mode incremental

# RSS 轻量增量同步(推荐日常使用,秒级完成)
python scripts/fetch_douban.py --user <id> --mode rss

# 导出为 JSON 格式
python scripts/fetch_douban.py --user <id> --format json

# 从已有数据生成年度报告
python scripts/fetch_douban.py --user <id> --report

# 只抓已读书籍
python scripts/fetch_douban.py --user <id> --type collect

参数说明

参数缩写说明默认值
--------------------------
--user-u豆瓣用户 ID上次记录的 ID
--output-o输出文件路径~/douban_books.csv
--mode-mfull / incremental / rssfull
--format-fcsv / jsoncsv
--type-tcollect / wish / do(可多次指定)全部
--max-pages每分类最大抓取页数(调试用)不限
--no-delay禁用随机延迟(仅测试)关闭
--report从已有数据生成年度阅读报告关闭

工作流

全量同步

1. 确认用户 ID(如未提供,让用户确认)
2. 运行 fetch_douban.py --user <id> --output <path> --mode full
3. 逐页抓取已读/想读/在读页面
4. 解析每本书:书名、作者、译者、出版社、评分、短评、日期、标签
5. 合并写入文件
6. 报告:抓取总数、各分类数量、耗时

翻页增量同步

1. 读取已有文件
2. 逐页抓取,碰到已有 豆瓣ID 则停止该分类
3. 将新增条目追加到文件末尾
4. 报告:新增数量、各分类变化

RSS 轻量增量同步(推荐日常使用)

1. 读取已有文件
2. 请求豆瓣 RSS 源:https://www.douban.com/feed/people/{uid}/interests
3. 解析 XML,提取书籍条目
4. 按 豆瓣ID 去重,跳过已存在的书籍
5. 将新增条目追加到文件
6. 报告:新增数量

RSS 模式优势:

  • 秒级完成,无需逐页翻页
  • 不会触发豆瓣频率限制
  • 适合每日定时自动同步

年度阅读报告

1. 读取已有数据文件
2. 按年份分组统计已读书籍
3. 展示:年度阅读量、月度分布、平均评分、评分分布、高频标签
4. 列出所有 5 星好书

维护规则

清理调试残留文件

每次更新脚本或执行抓取任务后,必须自动清理 scripts/ 目录下的调试残留文件。只应保留以下文件:

  • fetch_douban.py — 主脚本
  • .douban_sync_state.json — 同步状态文件(如有)

清理规则:

  • 删除所有 test_.py_test.py_v.py_retry._debug.analyze_*.py 等调试/测试文件
  • 删除所有 .js 文件(skill 不使用 Node.js)
  • 清理后确认 scripts/ 目录只包含必要文件
  • 此规则无需用户提醒,每次更新后自动执行

抓取范围与限制

分类典型数量预计耗时
------------------------
已读因人而异视数量而定
想读因人而异视数量而定
在读因人而异视数量而定
  • 每页 15 本,豆瓣强制 2.5-4.5 秒随机延迟(避免封禁)
  • 脚本内置错误重试(最多 3 次)
  • RSS 增量同步无延迟限制
  • 网络中断后可重新运行(从断点继续)

数据字段说明

详见 references/csv-format.md


解析规则说明

详见 references/parse-rules.md


常见问题

Q: 抓取失败/被拦截怎么办?

豆瓣有频率限制,请等待几分钟后再试。脚本会自动重试 3 次。

Q: 数据不完整怎么办?

可以指定只抓取某个分类:

python scripts/fetch_douban.py --user <user_id> --type collect  # 只抓已读
python scripts/fetch_douban.py --user <user_id> --type wish      # 只抓想读
python scripts/fetch_douban.py --user <user_id> --type do        # 只看在读

Q: 如何快速同步新增书籍?

推荐使用 RSS 模式,秒级完成:

python scripts/fetch_douban.py --user <id> --mode rss

Q: 如何导出为 JSON?

python scripts/fetch_douban.py --user <id> --format json

Q: 如何查看年度阅读报告?

python scripts/fetch_douban.py --user <id> --report

Q: 如何定时自动同步?

可以通过 WorkBuddy 自动化功能配置定时任务:

自动化名称:豆瓣读书每日同步
触发时间:每天 02:00
执行内容:python scripts/fetch_douban.py --user <id> --output <path> --mode rss

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-22 12:18 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

AdMapix

fly0pants
AdMapix 原始数据层,提供广告创意、应用、排名、下载/收入及市场元数据。返回 AdMapix API 的结构化 JSON;调用方...
★ 298 📥 142,861
data-analysis

Tavily 搜索

jacky1n7
通过 Tavily API 进行网页搜索(Brave 替代方案)。当用户要求搜索网页、查找来源或链接,且 Brave 网页搜索不可用时使用。
★ 278 📥 101,474
data-analysis

Data Analysis

ivangdavila
{"answer":"数据分析与可视化。查询数据库、生成报告、自动化电子表格,将原始数据转化为清晰可行的见解。适用于:(1) 您……"}
★ 216 📥 71,398