WeArchive | 公众号文章保存工具
WeArchive – 微信公众号文章下载与格式转换工具
项目介绍
WeArchive是一个功能强大、易于使用的微信公众号文章下载与格式转换工具,专为需要保存和管理微信公众号内容的用户设计。它支持批量导入文章链接、智能解析文章内容、导出多种格式文件,并提供直观的可视化交互界面,让用户轻松实现微信公众号文章的高效管理和归档。
项目特色
- 多格式导出:支持PDF、Word(.docx)、HTML和Markdown(.md)四种格式
- 批量处理:支持同时处理多个文章链接,大幅提高工作效率
- 智能解析:准确提取文章标题、作者、发布时间、正文内容、图片等关键信息
- 图片处理:自动下载并保存文章中的所有图片,确保导出文档完整展示原文内容
- 用户友好:简洁直观的Web界面,三步操作即可完成文章下载
- 跨平台:支持Windows、macOS和Linux系统
最新更新
详细的更新日志请查看CHANGELOG.md文件。
主要更新内容
- v1.2.0 (2025-11-19): 新增Markdown格式导出,文章搜索功能,导出模板自定义
- v1.1.0 (2025-11-01): 新增文章分类管理,定时任务功能,导出进度条和统计信息
- v1.0.0 (2025-10-01): 项目正式发布,支持多格式导出和批量下载功能
核心功能
1. 文章导入与多格式导出
- 多种导入方式:支持单条链接粘贴、批量文本导入(每行一个链接)
- 智能解析:准确提取文章标题、作者、发布时间、正文内容、图片等关键信息
- 格式多样:支持导出为PDF、Word(.docx)、HTML和Markdown(.md)四种格式
- 批量下载:支持同时处理多个文章链接,并提供打包下载功能
2. 可视化交互界面
- 简洁流程:三步操作即可完成文章下载:输入链接 → 选择格式 → 下载文件
- 实时反馈:实时显示处理进度和状态,让用户随时了解任务进展
- 响应式设计:完美适配桌面端、平板和移动端设备
- 现代化UI:采用Bootstrap 5框架构建,界面美观,操作便捷
3. 文章搜索与分类管理
- 搜索功能:支持在历史记录中按文章标题、作者名称、发布日期等关键字进行搜索
- 分类管理:支持对下载的文章进行分类和标签管理,方便用户查找和管理
- 自定义分类:允许用户创建自定义分类,满足个性化管理需求
4. 定时任务与自动下载
- 定时任务:支持设置定时下载指定公众号的最新文章
- 灵活配置:可配置任务名称、公众号ID、执行频率(每天/每周/每月)、执行时间、导出格式等
- 自动执行:任务到期后自动执行,并记录执行结果
5. 日志与历史记录
- 详细日志:记录用户操作行为和文件转换状态,便于问题排查
- 历史记录:保存所有下载历史,支持查看和重新下载
- 条件查询:支持按时间范围、操作类型、状态等条件查询历史记录
- 数据安全:本地存储,确保用户数据安全
6. 性能与稳定性
- 多线程处理:采用多线程技术提升批量文章处理的速度和效率
- 优化算法:高效的文章解析和格式转换算法,减少处理时间
- 异常处理:完善的异常处理机制,确保系统稳定运行
- 内存优化:优化内存使用,支持长时间运行
技术栈
后端
- Python 3.11+:主要开发语言,提供强大的编程能力和丰富的第三方库支持
- Flask 2.3+:轻量级Web应用框架,用于构建RESTful API和Web界面
- BeautifulSoup4:HTML解析库,用于智能提取网页内容
- Requests:HTTP请求库,用于获取网页内容
- Selenium:动态页面内容提取工具,用于处理需要JavaScript渲染的页面
- pdfkit/wkhtmltopdf:PDF转换工具,用于将HTML转换为高质量PDF文档
- python-docx:Word文档生成库,用于创建可编辑的Word文档
- SQLite:轻量级数据库,用于本地日志和历史记录存储
前端
- HTML5/CSS3:构建页面结构和样式
- Bootstrap 5:现代化响应式UI框架,提供美观的组件和布局
- jQuery:JavaScript库,简化DOM操作和AJAX请求
- Font Awesome:图标库,提供丰富的图标资源
核心依赖
| 依赖库 | 版本 | 用途 |
|---|---|---|
| Flask | 2.3.3 | Web应用框架 |
| requests | 2.31.0 | 网络请求 |
| beautifulsoup4 | 4.12.2 | HTML解析 |
| python-docx | 0.8.11 | Word文档生成 |
| pdfkit | 1.0.0 | PDF转换 |
| selenium | 4.11.2 | 动态页面处理 |
| sqlite3 | 内置 | 数据库存储 |
安装与运行
1. 环境要求
- Python:3.11及以上版本
- wkhtmltopdf:0.12.6及以上版本(用于PDF转换)
- 操作系统:Windows 10/11 64位、macOS 10.15+、Linux(Ubuntu 20.04+)
2. 安装步骤
Windows
-
安装Python:
- 从Python官网下载Windows 64位安装包
- 安装时勾选"Add Python to PATH"选项
- 安装完成后,打开命令提示符验证:
python --version
-
安装wkhtmltopdf:
- 从wkhtmltopdf官网下载Windows版本
- 安装时选择默认路径(通常为
C:\Program Files\wkhtmltopdf) - 确保
wkhtmltopdf已添加到系统环境变量PATH中
-
获取项目代码:
- 克隆项目仓库或下载ZIP文件并解压
-
运行启动脚本:
python run.py
macOS
-
安装Python:
- 使用Homebrew安装(推荐):
brew install python - 或从Python官网下载macOS安装包
- 使用Homebrew安装(推荐):
-
安装wkhtmltopdf:
brew install wkhtmltopdf -
获取项目代码:
- 克隆项目仓库或下载ZIP文件并解压
-
运行启动脚本:
python run.py
Linux (Ubuntu)
-
安装Python:
sudo apt-get update sudo apt-get install python3 python3-pip python3-venv -
安装wkhtmltopdf:
sudo apt-get install wkhtmltopdf -
获取项目代码:
- 克隆项目仓库或下载ZIP文件并解压
-
运行启动脚本:
python3 run.py
3. 手动安装依赖(可选)
如果启动脚本自动安装依赖失败,可以手动安装:
创建虚拟环境(推荐)
python -m venv venv
# Windows激活虚拟环境
venv\Scripts\activate
# macOS/Linux激活虚拟环境
source venv/bin/activate
安装依赖
pip install -r requirements.txt
4. 环境变量配置
部分功能需要配置环境变量:
Windows
# 设置wkhtmltopdf路径(如果未自动添加到PATH)
set WKHTMLTOPDF_PATH="C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"
macOS/Linux
# 设置wkhtmltopdf路径(如果未自动添加到PATH)
export WKHTMLTOPDF_PATH="/usr/local/bin/wkhtmltopdf"
使用方法
1. 启动应用
运行启动脚本后,系统会自动打开浏览器访问应用界面:
python run.py
如果浏览器未自动打开,请手动访问:http://localhost:5000
2. 单篇文章下载
- 在首页的"文章链接输入"区域粘贴微信公众号文章链接
- 选择导出格式(可多选):
- PDF:高质量排版,保留原始文章样式
- Word(.docx):支持编辑,保留文章结构
- HTML:完整保留原始HTML结构
- Markdown(.md):标准Markdown格式,便于后续编辑
- 点击"开始下载"按钮
- 等待处理完成后,文件会自动保存到默认下载目录
3. 批量文章下载
- 点击顶部导航栏的"批量下载"按钮
- 在文本框中输入多个微信公众号文章链接(每行一个)
- 选择导出格式
- 点击"批量下载"按钮
- 所有文章处理完成后,系统会生成一个ZIP压缩包并自动下载
4. 文章搜索与管理
- 点击顶部导航栏的"历史记录"按钮
- 在搜索框中输入关键字(文章标题、作者名称、发布日期等)
- 点击"搜索"按钮
- 搜索结果会显示在下方列表中
- 点击列表中的文章可以查看详细信息或重新下载
5. 定时任务管理
- 点击顶部导航栏的"定时任务"按钮
- 点击"添加任务"按钮
- 配置任务参数:
- 任务名称:自定义任务名称
- 公众号ID:微信公众号的ID或名称
- 执行频率:每天/每周/每月
- 执行时间:任务执行的具体时间
- 导出格式:选择导出格式
- 点击"保存"按钮
- 任务会自动添加到任务列表中
- 可以在任务列表中查看、编辑或删除任务
6. 自定义设置
- 点击顶部导航栏的"设置"按钮
- 可以配置以下选项:
- 默认导出格式
- PDF页面大小和边距
- Word样式模板
- 图片处理方式
- 下载文件保存路径
- 自动清理临时文件周期
- 点击"保存设置"按钮
使用示例
单篇文章下载示例
-
输入链接:
https://mp.weixin.qq.com/s/1234567890abcdefghijk -
选择格式:PDF, Word
-
点击下载:等待处理完成后,会得到两个文件:
文章标题.pdf文章标题.docx
批量下载示例
-
输入链接:
https://mp.weixin.qq.com/s/1234567890abcdefghijk https://mp.weixin.qq.com/s/klmnopqrstuvwxyz123456 https://mp.weixin.qq.com/s/abcdefghijklmnopqrstuv -
选择格式:Markdown
-
点击批量下载:等待处理完成后,会得到一个ZIP文件,包含:
文章1.md文章2.md文章3.md
功能说明
1. 文章下载功能
支持的链接格式
- 标准微信公众号文章链接:
https://mp.weixin.qq.com/s/XXX - 短链接:
https://mp.weixin.qq.com/s/YYY - 带参数的链接:
https://mp.weixin.qq.com/s?id=XXX&mid=YYY
下载机制
- 智能链接解析:自动识别微信公众号文章链接格式
- 反爬虫处理:内置Cookie管理和请求头伪装,避免被微信限制访问
- 文章内容提取:采用多策略提取文章内容,确保高成功率
- 图片处理:图片自动下载并本地化,支持重试机制和自动压缩
2. 多格式导出功能
PDF导出
- 高质量排版:精确还原微信公众号文章原始样式
- 自动目录生成:基于文章标题层级自动创建目录
- 自定义页面设置:支持A4、Letter等页面大小,可调整边距
- 图片优化:自动调整图片分辨率和质量,平衡文件大小和清晰度
- 页眉页脚:自动添加文章标题、页码和下载日期
Word (.docx)导出
- 结构化文档:保留文章标题层级、段落格式和列表样式
- 编辑友好:完全支持Word编辑功能,可直接修改内容
- 自动目录:基于文章标题自动生成可跳转目录
- 图片处理:图片完整嵌入,支持缩放和查看
- 样式模板:支持自定义Word样式模板,统一文档风格
HTML导出
- 完整还原:精确保留原始文章的HTML结构和样式
- 资源本地化:所有图片、CSS和JavaScript资源自动下载并本地化
- 离线浏览:生成的HTML文件可完全离线打开和浏览
- 兼容性修复:自动修复部分HTML兼容性问题,确保在主流浏览器中正常显示
Markdown (.md)导出
- 标准Markdown格式:支持标题、列表、图片、链接等Markdown元素
- 代码块处理:保留文章中的代码块格式
- 表格支持:自动转换HTML表格为Markdown表格
- 图片引用:图片自动下载并引用本地路径
3. 批量处理功能
- 批量导入:支持从文本文件导入多个文章链接
- 多线程处理:同时处理多个文章,提高下载效率
- 进度实时显示:每个文章的处理进度实时更新
- 错误处理:单个文章处理失败不影响其他文章
- 打包下载:批量处理完成后自动生成ZIP压缩包
4. 文章管理功能
- 文章搜索:支持按标题、作者、发布日期等关键字搜索
- 分类管理:支持自定义分类,方便整理和查找
- 标签系统:可给文章添加标签,实现多维度管理
- 批量操作:支持批量删除、批量导出等操作
- 统计功能:显示文章数量、占用空间等统计信息
5. 定时任务功能
- 自动下载:可设置定时任务,自动下载指定公众号的最新文章
- 灵活配置:支持每天、每周、每月等多种执行频率
- 任务管理:可添加、编辑、删除和暂停定时任务
- 结果通知:任务执行完成后可发送通知
6. 系统管理功能
- 设置管理:支持配置导出格式、下载路径、图片处理等选项
- 日志查看:详细记录系统运行日志,便于问题排查
- 缓存管理:支持清理缓存和临时文件
- 版本检查:支持检查软件更新
常见问题
1. 文章下载问题
Q: 为什么有些文章无法下载?
A: 可能是以下原因:
- 文章链接格式不正确,请检查链接是否以
https://mp.weixin.qq.com/s/开头 - 文章已被删除或设置为私密
- 微信官方限制了访问,请尝试更换网络环境或稍后重试
- 网络连接不稳定,请检查网络连接状况
Q: 为什么文章内容不完整?
A: 某些微信公众号文章采用了特殊的内容展示方式,可能导致内容提取不完整。您可以尝试:
- 更新软件到最新版本
- 使用HTML格式导出,保留原始结构
- 手动复制缺失的内容
2. 导出格式问题
Q: 为什么导出的PDF文件排版有问题?
A: 请确保:
- wkhtmltopdf版本在0.12.6以上
- 网络连接稳定,所有图片都能正常下载
- 文章内容不包含过于复杂的动态效果
如果问题仍然存在,建议使用HTML格式导出,然后使用其他专业工具转换为PDF。
Q: 为什么导出的Word文件样式不一致?
A: 微信公众号文章的样式较为复杂,Word转换过程中可能会有部分样式丢失。您可以:
- 使用自定义Word样式模板
- 导出后手动调整样式
- 尝试使用HTML格式导出
3. 性能与效率问题
Q: 为什么处理速度很慢?
A: 处理速度受以下因素影响:
- 网络环境:网络速度慢会导致下载延迟
- 文章长度:长篇文章处理时间更长
- 图片数量:图片越多,处理时间越长
- 系统资源:CPU和内存不足会影响处理效率
建议:
- 减少同时处理的文章数量
- 关闭其他占用系统资源的程序
- 确保网络连接稳定
4. 系统配置问题
Q: 如何修改下载文件的保存路径?
A: 点击顶部导航栏的"设置"按钮,在"下载设置"中修改保存路径,然后点击"保存设置"即可。
Q: 如何配置定时任务?
A: 点击顶部导航栏的"定时任务"按钮,点击"添加任务",填写公众号ID、执行频率、执行时间等信息,然后点击"保存"即可。
5. 其他问题
Q: 如何更新软件?
A: 请访问项目GitHub仓库,下载最新版本的源代码,然后替换现有文件即可。更新前建议备份配置文件和数据。
Q: 如何备份数据?
A: 数据文件位于backend/data/目录下,您可以定期备份该目录下的文件。
Q: 如何报告bug或提出功能建议?
A: 请在项目GitHub仓库的Issues页面提交bug报告或功能建议,我们会尽快处理。
项目结构
WeArchive/
├── backend/ # 后端代码
│ ├── app.py # 主应用文件
│ ├── config.py # 配置文件
│ ├── controllers/ # 控制器层
│ │ ├── article.py # 文章相关接口
│ │ ├── export.py # 导出相关接口
│ │ ├── task.py # 任务相关接口
│ │ └── user.py # 用户相关接口
│ ├── models/ # 数据模型层
│ │ ├── article.py # 文章模型
│ │ ├── task.py # 任务模型
│ │ └── user.py # 用户模型
│ ├── services/ # 业务逻辑层
│ │ ├── article.py # 文章服务
│ │ ├── export.py # 导出服务
│ │ ├── task.py # 任务服务
│ │ └── wechat.py # 微信服务
│ ├── utils/ # 工具函数
│ │ ├── download.py # 下载工具
│ │ ├── extract.py # 内容提取工具
│ │ ├── export.py # 导出工具
│ │ └── wechat.py # 微信相关工具
│ ├── data/ # 数据文件
│ └── logs/ # 日志文件
├── frontend/ # 前端代码
│ ├── css/ # 样式文件
│ │ ├── main.css # 主样式文件
│ │ └── responsive.css # 响应式样式
│ ├── js/ # JavaScript文件
│ │ ├── main.js # 主JS文件
│ │ ├── api.js # API调用
│ │ └── components.js # 组件定义
│ └── templates/ # HTML模板
│ ├── index.html # 首页
│ ├── batch.html # 批量下载页
│ ├── history.html # 历史记录页
│ ├── task.html # 定时任务页
│ └── settings.html # 设置页
├── static/ # 静态资源
│ ├── images/ # 图片资源
│ └── fonts/ # 字体资源
├── tests/ # 测试文件
│ ├── test_article.py # 文章模块测试
│ ├── test_export.py # 导出模块测试
│ └── test_wechat.py # 微信模块测试
├── requirements.txt # 依赖列表
├── run.py # 启动脚本
├── LICENSE # 许可证文件
└── README.md # 项目说明
开发说明
开发环境搭建
-
克隆项目
git clone https://github.com/xxx/WeArchive.git cd WeArchive -
创建虚拟环境
# Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate -
安装依赖
pip install -r requirements.txt -
安装wkhtmltopdf
请参考「安装与运行」部分的说明。 -
配置环境变量
复制.env.example文件为.env,并根据需要修改配置:cp .env.example .env -
运行开发服务器
python run.py
代码规范
- 后端:遵循PEP 8代码规范
- 前端:采用ES6+语法,遵循Airbnb JavaScript规范
- 提交信息:遵循Conventional Commits规范
测试
运行测试:
python -m pytest tests/
贡献指南
- Fork项目
-
创建特性分支
git checkout -b feature/AmazingFeature -
提交更改
git commit -m 'feat: Add some AmazingFeature' -
推送到分支
git push origin feature/AmazingFeature - 提交Pull Request
许可证
本项目采用MIT许可证,详见LICENSE文件。
联系方式
抖音:从 0 至 1
微信公众号:从 0 至 1
博客网站:www.from0to1.cn
说明:
适用范围
本软件仅面向具备一定技术基础的学习者、研究人员,用于个人非商业性质的技术探索、功能调试和代码学习。
使用者可通过阅读软件源码、调试运行流程
使用须知
非商业用途限制
严禁将本软件及相关源码、文档用于任何商业盈利活动,包括但不限于销售、租赁、授权他人使用以获取收益,或嵌入商业产品中进行分发。
版权声明
本软件的源码、文档等内容的知识产权归 [开发者姓名 / 团队名称] 所有。使用者可在学习范围内复制、修改源码,但修改后的内容仍需保留本学习使用说明,且不得用于商业用途。
免责声明
本软件为学习用版本,未经过严格的商业化测试,可能存在功能缺陷、性能不足或兼容性问题,开发者不对软件运行过程中产生的任何损失(包括但不限于数据丢失、设备损坏、业务中断等)承担责任。
使用者在使用本软件时,需遵守所在地区的相关法律法规,严禁利用本软件从事任何违法违规行为,由此产生的一切后果由使用者自行承担。
致谢
感谢所有为项目做出贡献的开发者和用户!
版本更新日志
请查看CHANGELOG.md文件获取详细的版本更新记录。
感谢使用WeArchive!希望它能为您提供便利的微信公众号文章下载和格式转换服务。
感谢使用WeArchive!希望它能为您提供便利的微信公众号文章下载和格式转换服务。