字节笔记本

2026年2月23日

ZhihuToNote:知乎收藏批量保存工具

本文介绍 ZhihuToNote,一个用 Go 语言实现的知乎收藏批量保存工具。它可以将知乎收藏夹中的文章自动发送到 Evernote/印象笔记、OneNote、为知笔记和有道笔记中,方便用户离线阅读和长期保存。

项目简介

ZhihuToNote 是一个开源的 Go 语言项目,由 limengchang 开发维护。该项目 fork 自 dingpp/ZhihuToEvernote,在此基础上增加了对 OneNote 和有道笔记的支持。

项目主要功能:

  • 批量抓取知乎收藏夹中的文章
  • 自动将文章内容发送到多种笔记软件
  • 支持分页抓取,可处理大量收藏内容
  • 通过邮件方式发送,无需笔记软件 API

核心特性

  • 多平台支持:支持 Evernote/印象笔记、OneNote、为知笔记(wiz)、有道笔记
  • 批量处理:自动处理分页,可批量抓取整个收藏夹
  • 邮件发送:使用 SMTP 邮件发送,配置简单
  • 笔记本分类:支持将文章发送到指定笔记本(Evernote/印象笔记)
  • 轻量级:单文件可执行程序,无需复杂部署

技术栈

  • Go 语言:项目使用 Go 语言开发,编译为单一可执行文件
  • goquery:用于 HTML 页面解析和内容提取
  • goini:用于配置文件读取
  • SMTP:通过邮件方式发送内容到笔记软件

安装指南

前置要求

  • Go 1.11+(如需自行编译)
  • 有效的邮箱账号(用于发送邮件)
  • 目标笔记软件的邮件接收地址

方式一:使用预编译版本

  1. 从项目 Build 目录下载 ZhihuToNote.exe
  2. 下载 config.ini 配置文件
  3. 将两个文件放在同一目录下

方式二:自行编译

bash
# 克隆项目
git clone https://github.com/limengchang/ZhihuToNote.git
cd ZhihuToNote

# 安装依赖
go get github.com/opesun/goquery
go get github.com/widuu/goini

# 编译
go build ZhihuToNote.go

配置说明

编辑 config.ini 文件,配置以下信息:

ini
[info]
Url = http://www.zhihu.com/collection/20261977  ; 知乎收藏地址
MailHost = smtp.126.com                          ; SMTP 服务器地址
MailUser = user@126.com                          ; 发送邮件账号
MailPassword = password                          ; 邮件密码

[note]
Note = evernote                                  ; 笔记类型:evernote/onenote/youdao/wiz

[evernote]
ReceiveMail = evernote@m.yinxiang.com            ; 印象笔记邮件地址
Notebook = 知乎收藏文章                          ; 目标笔记本名称

[wiz]
ReceiveMail = wiz@mywiz.cn                       ; 为知笔记邮件地址

[onenote]
ReceiveMail = me@onenote.com                     ; OneNote 固定地址

[youdao]
ReceiveMail = save@note.youdao.com               ; 有道笔记固定地址

注意事项

  • config.ini 文件必须使用 UTF-8 无 BOM 格式
  • OneNote 用户需要在 OneNote 中添加邮件地址
  • 有道笔记用户需要在网页版设置中添加邮件地址

使用示例

基本用法

bash
# Windows
ZhihuToNote.exe

# Linux/Mac
./ZhihuToNote

程序会自动:

  1. 读取配置文件中的知乎收藏地址
  2. 逐页抓取收藏夹中的问题链接
  3. 提取每个问题的标题和正文内容
  4. 通过邮件发送到配置的笔记软件

代码结构

go
// 获取知乎问题列表
func GetZhihuQuestionList(url string) {
    urlHeader := "http://www.zhihu.com"
    for i := 1; i < 100; i++ {
        // 分页处理
        url := url + strconv.Itoa(i)
        r, err := goquery.ParseUrl(url)
        // 提取问题链接并处理
    }
}

// 获取问题正文
func GetSubjectBody(url string) {
    p, error := goquery.ParseUrl(url)
    subject := p.Find("title").Text()
    body := p.Html()
    // 发送到笔记
}

// 发送邮件
func SendToNote(user, password, host, to, subject, body string) error {
    // SMTP 邮件发送逻辑
}

工作原理

  1. 页面抓取:使用 goquery 库解析知乎收藏页面 HTML
  2. 链接提取:提取问题标题链接,构建完整 URL
  3. 内容获取:访问每个问题页面,获取标题和正文 HTML
  4. 邮件构造:将内容封装为 HTML 邮件格式
  5. SMTP 发送:通过配置的 SMTP 服务器发送邮件
  6. 笔记接收:笔记软件通过邮件接收并自动保存

项目链接

适用场景

  • 需要备份知乎收藏夹内容的用户
  • 希望离线阅读知乎文章的用户
  • 需要将网络文章整理到笔记软件的知识管理者
  • 想要自动化收藏整理流程的效率工具使用者
分享: