本项目可自动抓取并解码知乎付费专栏中的自定义字体,以解决乱码问题,并最终生成可读的文本文件。
免责声明:
本项目仅供个人学习与研究使用,不得用于任何商业用途或违反知乎及相关平台的用户协议、服务条款及版权声明的行为。请自行承担可能产生的法律风险。
- 自动获取页面内容:通过传入知乎付费专栏 URL,脚本会自动抓取并解析页面,保存内容到本地。
- 自定义字体解析:部分专栏使用自定义字体对文本进行混淆,通过
fontTools结合ddddocr和modelscopeOCR 模型,还原混淆文本。 - 文本替换与修正:程序根据识别的映射关系替换混淆字符,输出可阅读的纯文本文件。
- 多节爬取:检测到下一节链接后,会依次自动获取后续章节,直至抓取完毕或无法找到下一节链接。
本项目使用 conda 进行环境管理,提供了 environment.yml 文件,可快速创建所需环境并安装所有依赖。
- 克隆或下载本项目:
git clone https://github.com/your-username/zhihu-paid-column-font-decoder.git cd zhihu-paid-column-font-decoder - 创建并激活 conda 环境:
conda env create -f environment.yml conda activate zhihu-font-decoder
注意:上面命令中的环境名称需要与你的
environment.yml文件中的name字段一致。 - 若后续需要更新依赖,可在项目目录下使用:
conda env update -f environment.yml
-
准备知乎 Cookies
- 在项目根目录下新建(或使用已有)文件
ck.txt,将知乎登录后的 Cookies 信息写入其中。 - 注意:Cookies 通常具有时效性,若失效需要重新获取。
- 在项目根目录下新建(或使用已有)文件
-
配置代码中的起始专栏链接
- 在
main.py(或相应的主文件)中,找到将其替换为你需要抓取的知乎付费专栏第一节文章的链接。firstsession_url = "https://www.zhihu.com/market/paid_column/xxxx/section/xxxx"
- 在
-
运行脚本
python main.py
- 执行后会弹出一个文件夹选择对话框,选定文件夹用于保存抓取结果。
- 脚本会自动爬取和识别付费专栏内容,并将解码后的文本文件保存到你指定的目录中。
- 当检测到下一节链接时,会持续抓取下一节内容,直至无法检测到新的章节链接。
-
查看结果
- 所有章节将按照章节顺序生成文本文件,保存在你选择的文件夹中。
- 如果需要保存原始 HTML 文件,可在调用
save_content方法时修改file_type参数为'html'。
zhihu-paid-column-font-decoder
├── ck.txt # 存储知乎 Cookies
├── main.py # 项目主入口(示例)
├── environment.yml # conda 环境配置文件
└── README.md # 使用说明
- 自定义字体识别准确度
- 本项目使用 ddddocr 和 modelscope OCR 进行字符识别,若识别结果有误,可在代码中尝试调整参数或更换其他识别方法。
- 合法合规抓取
- 请务必遵守 知乎用户协议 和相关法律法规,确认仅限在合法授权的前提下获取专栏内容。
- 本项目仅供学习交流,因使用引起的任何责任需自行承担。
- Cookies 失效问题
ck.txt内 Cookies 若失效,需要重新获取并替换,否则脚本无法正常爬取付费专栏。
- 网络请求间隔
- 默认在发送请求后有一定时间间隔(如 2 秒或 5 秒),防止过快访问导致 IP 被封或其他请求限制。可根据需要适度调整。
- 部分思路及原始代码参考自 CSDN - cc605523,感谢分享。
- 字体/文本识别相关依赖:
本项目内所使用的第三方依赖均遵循各自的开源协议(MIT、Apache-2.0 等),请自行查阅。项目本身可根据需求选择合适的开源协议(如 MIT、Apache-2.0、GPLv3 等),以下以 MIT License 为例:
MIT License
Copyright (c) 2023 ...
Permission is hereby granted, free of charge, to any person obtaining a copy ...
如有改进建议或 Bug 反馈,欢迎在项目的 Issues 中提出。 祝使用愉快!