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
  1. 安装Python

    • 从Python官网下载Windows 64位安装包
    • 安装时勾选"Add Python to PATH"选项
    • 安装完成后,打开命令提示符验证:
      python --version
      
  2. 安装wkhtmltopdf

    • 从wkhtmltopdf官网下载Windows版本
    • 安装时选择默认路径(通常为C:\Program Files\wkhtmltopdf
    • 确保wkhtmltopdf已添加到系统环境变量PATH中
  3. 获取项目代码

    • 克隆项目仓库或下载ZIP文件并解压
  4. 运行启动脚本

    python run.py
    
macOS
  1. 安装Python

    • 使用Homebrew安装(推荐):
      brew install python
      
    • 或从Python官网下载macOS安装包
  2. 安装wkhtmltopdf

    brew install wkhtmltopdf
    
  3. 获取项目代码

    • 克隆项目仓库或下载ZIP文件并解压
  4. 运行启动脚本

    python run.py
    
Linux (Ubuntu)
  1. 安装Python

    sudo apt-get update
    sudo apt-get install python3 python3-pip python3-venv
    
  2. 安装wkhtmltopdf

    sudo apt-get install wkhtmltopdf
    
  3. 获取项目代码

    • 克隆项目仓库或下载ZIP文件并解压
  4. 运行启动脚本

    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. 单篇文章下载

  1. 在首页的"文章链接输入"区域粘贴微信公众号文章链接
  2. 选择导出格式(可多选):
    • PDF:高质量排版,保留原始文章样式
    • Word(.docx):支持编辑,保留文章结构
    • HTML:完整保留原始HTML结构
    • Markdown(.md):标准Markdown格式,便于后续编辑
  3. 点击"开始下载"按钮
  4. 等待处理完成后,文件会自动保存到默认下载目录

3. 批量文章下载

  1. 点击顶部导航栏的"批量下载"按钮
  2. 在文本框中输入多个微信公众号文章链接(每行一个)
  3. 选择导出格式
  4. 点击"批量下载"按钮
  5. 所有文章处理完成后,系统会生成一个ZIP压缩包并自动下载

4. 文章搜索与管理

  1. 点击顶部导航栏的"历史记录"按钮
  2. 在搜索框中输入关键字(文章标题、作者名称、发布日期等)
  3. 点击"搜索"按钮
  4. 搜索结果会显示在下方列表中
  5. 点击列表中的文章可以查看详细信息或重新下载

5. 定时任务管理

  1. 点击顶部导航栏的"定时任务"按钮
  2. 点击"添加任务"按钮
  3. 配置任务参数:
    • 任务名称:自定义任务名称
    • 公众号ID:微信公众号的ID或名称
    • 执行频率:每天/每周/每月
    • 执行时间:任务执行的具体时间
    • 导出格式:选择导出格式
  4. 点击"保存"按钮
  5. 任务会自动添加到任务列表中
  6. 可以在任务列表中查看、编辑或删除任务

6. 自定义设置

  1. 点击顶部导航栏的"设置"按钮
  2. 可以配置以下选项:
    • 默认导出格式
    • PDF页面大小和边距
    • Word样式模板
    • 图片处理方式
    • 下载文件保存路径
    • 自动清理临时文件周期
  3. 点击"保存设置"按钮

使用示例

单篇文章下载示例

  1. 输入链接

    https://mp.weixin.qq.com/s/1234567890abcdefghijk
    
  2. 选择格式:PDF, Word

  3. 点击下载:等待处理完成后,会得到两个文件:

    • 文章标题.pdf
    • 文章标题.docx

批量下载示例

  1. 输入链接

    https://mp.weixin.qq.com/s/1234567890abcdefghijk
    https://mp.weixin.qq.com/s/klmnopqrstuvwxyz123456
    https://mp.weixin.qq.com/s/abcdefghijklmnopqrstuv
    
  2. 选择格式:Markdown

  3. 点击批量下载:等待处理完成后,会得到一个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              # 项目说明

开发说明

开发环境搭建

  1. 克隆项目

    git clone https://github.com/xxx/WeArchive.git
    cd WeArchive
    
  2. 创建虚拟环境

    # Windows
    python -m venv venv
    venv\Scripts\activate
    # macOS/Linux
    python3 -m venv venv
    source venv/bin/activate
    
  3. 安装依赖

    pip install -r requirements.txt
    
  4. 安装wkhtmltopdf
    请参考「安装与运行」部分的说明。

  5. 配置环境变量
    复制.env.example文件为.env,并根据需要修改配置:

    cp .env.example .env
    
  6. 运行开发服务器

    python run.py
    

代码规范

  • 后端:遵循PEP 8代码规范
  • 前端:采用ES6+语法,遵循Airbnb JavaScript规范
  • 提交信息:遵循Conventional Commits规范

测试

运行测试:

python -m pytest tests/

贡献指南

  1. Fork项目
  2. 创建特性分支

    git checkout -b feature/AmazingFeature
    
  3. 提交更改

    git commit -m 'feat: Add some AmazingFeature'
    
  4. 推送到分支

    git push origin feature/AmazingFeature
    
  5. 提交Pull Request

许可证

本项目采用MIT许可证,详见LICENSE文件。

联系方式

抖音:从 0 至 1

微信公众号:从 0 至 1

博客网站:www.from0to1.cn


说明:

适用范围

本软件仅面向具备一定技术基础的学习者、研究人员,用于个人非商业性质的技术探索、功能调试和代码学习。
使用者可通过阅读软件源码、调试运行流程

使用须知

非商业用途限制
严禁将本软件及相关源码、文档用于任何商业盈利活动,包括但不限于销售、租赁、授权他人使用以获取收益,或嵌入商业产品中进行分发。

版权声明

本软件的源码、文档等内容的知识产权归 [开发者姓名 / 团队名称] 所有。使用者可在学习范围内复制、修改源码,但修改后的内容仍需保留本学习使用说明,且不得用于商业用途。

免责声明

本软件为学习用版本,未经过严格的商业化测试,可能存在功能缺陷、性能不足或兼容性问题,开发者不对软件运行过程中产生的任何损失(包括但不限于数据丢失、设备损坏、业务中断等)承担责任。
使用者在使用本软件时,需遵守所在地区的相关法律法规,严禁利用本软件从事任何违法违规行为,由此产生的一切后果由使用者自行承担。

致谢

感谢所有为项目做出贡献的开发者和用户!

版本更新日志

请查看CHANGELOG.md文件获取详细的版本更新记录。


感谢使用WeArchive!希望它能为您提供便利的微信公众号文章下载和格式转换服务。


感谢使用WeArchive!希望它能为您提供便利的微信公众号文章下载和格式转换服务。

© 版权声明

相关文章