Skip to content

将知乎专栏文章转换为 Markdown 文件保存到本地

Notifications You must be signed in to change notification settings

chenluda/zhihu-download

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

知乎专栏文章 Markdown 转换器

一键将知乎专栏文章转换并保存为 Markdown 文件

Python 3.9 Flask 2.3.3 Status Time Web
Zhihu Article

特点

支持最新 HTML 结构:持续更新以适应知乎平台的变化。

gif

断点续传功能:支持大体量专栏文章下载的断点续传,提高使用便利性。

gif

完善的数学公式支持:特别优化了数学公式的提取和转换,保证了复杂内容的准确性和完整性。

图片下载与处理:处理并优化文章中的图片链接,确保转换后的 Markdown 文件包含原文的所有视觉元素。

运行环境

flask 2.3.3
flask-cors 4.0.0
python 3.9

运行代码

python app.py

Note

为应对知乎最新的验证机制,添加 Cookies 属性,点击 查看如何获取知乎 Cookie。

Note

flask 2.2 以下版本需要将 app.py 中第 46 行,

return send_file(zip_data, download_name = markdown_title + ".zip", as_attachment=True)

改为:

return send_file(zip_data, attachment_filename = markdown_title + ".zip", as_attachment=True)

Note

Internet Download Manager (IDM) 会自动拦截下载链接并进行处理,导致两次请求。
也不是什么大问题,有强迫症的朋友可以将网站加入 IDM 的 '下列地址不要自动开始下载'。

  1. 打开 IDM 界面,菜单栏 '下载' -> '选项' -> '文件类型';
  2. 找到 '下列地址不要自动开始下载:' 文字下方的 '编辑列表...' 按钮;
  3. 对于本地部署,直接将 'http://127.0.0.1:5000/' 加入。线上部署,将对应网址加入。

Note

因为我们遇到过文件名太长,导致图片不能显示的情况,所以我们刻意限制了文件名的长度,但多数情况下是可以使用全名的,如果需要使用全名,请将 main.py 中的第 87 行注释掉,

markdown_title = get_valid_filename(title[-20:-1])

将第 89 行的注释打开:

markdown_title = get_valid_filename(title)

更新日志

  • 2023-05-29:适应知乎最新 HTML 结构。
  • 2023-06-12:修复数学公式 Markdown 转换 bug。
  • 2023-06-22:为数学公式添加转义符号,增强兼容性。
  • 2023-08-19:修复公式和卡片链接相关的多项 bug。
  • 2023-10-27:优化代码,增加断点续传功能,改进图片处理和链接优化。(感谢 Aswatthafei 的提醒!)
  • 2023-11-16:优化链接等格式。
  • 2023-11-22:更改内容标题格式。
  • 2023-12-27:更改内容标题格式;增加对数学公式中 \tag{*} 的特殊处理。(感谢 korruz 的意见!)
  • 2024-03-14:增加动图支持;更改链接格式。
  • 2024-04-22:增加 Cookies 以应对验证机制。
  • 2024-04-29:增加对视频的处理。

趋势

Star History Chart

About

将知乎专栏文章转换为 Markdown 文件保存到本地

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published