/zhihu-download

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

Primary LanguagePython

知乎专栏文章 Markdown 转换器

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

Python 3.9 Flask 2.3.3 Status

image

特点

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

gif

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

gif

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

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

运行环境

flask 2.3.3
flask-cors 4.0.0
python 3.9

运行代码

python app.py

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 的意见!)

趋势

Star History Chart