WeSpy 是一个用于获取wx公众号文章并转换为 Markdown 格式的 Python 工具,支持图片防盗链处理和多种输出格式。
- 🚀 智能文章提取:自动识别文章标题、作者、发布时间和正文内容
- 📱 wx公众号支持:专门优化wx公众号文章的提取
- 🖼️ 图片防盗链处理:自动处理图片防盗链问题,确保图片正常显示
- 📝 灵活输出配置:默认只输出 Markdown,可选择 HTML 和 JSON 格式
- 🌐 通用网页支持:支持大多数网站的文章提取
- 🎯 命令行友好:提供简单易用的命令行界面
- 📂 批量处理:支持批量处理多个文章链接
pip install wespygit clone https://github.com/tianchang/wespy.git
cd wespy
pip install -e .# 获取wx公众号文章(默认只输出 Markdown)
wespy "https://mp.weixin.qq.com/s/xxxxx"
# 指定输出目录
wespy "https://mp.weixin.qq.com/s/xxxxx" -o /path/to/output
# 输出 Markdown + HTML 格式
wespy "https://example.com/article" --html
# 输出 Markdown + JSON 格式
wespy "https://example.com/article" --json
# 输出所有格式(HTML + JSON + Markdown)
wespy "https://example.com/article" --all
# 显示详细信息
wespy "https://example.com/article" -v如果不提供任何参数,程序会进入交互模式:
wespy然后根据提示输入文章 URL、输出目录和输出格式选择:
- 仅 Markdown(默认)
- Markdown + HTML
- Markdown + JSON
- 全部格式(HTML + JSON + Markdown)
from wespy import ArticleFetcher
# 创建文章获取器实例
fetcher = ArticleFetcher()
# 获取文章(默认只输出 Markdown)
article_info = fetcher.fetch_article(
url="https://mp.weixin.qq.com/s/xxxxx",
output_dir="articles"
)
# 获取文章并指定输出格式
article_info = fetcher.fetch_article(
url="https://mp.weixin.qq.com/s/xxxxx",
output_dir="articles",
save_html=True, # 同时保存HTML文件
save_json=True, # 同时保存JSON文件
save_markdown=True # 保存Markdown文件(默认为True)
)
if article_info:
print(f"标题: {article_info['title']}")
print(f"作者: {article_info['author']}")
print(f"发布时间: {article_info['publish_time']}")WeSpy 默认只生成 Markdown 文件,但可以通过配置选项选择其他格式:
articles/
└── 文章标题_1627834567.md # Markdown格式
- HTML 文件:原始 HTML 内容(使用
--html选项) - JSON 文件:文章元数据信息(使用
--json选项) - Markdown 文件:转换后的 Markdown 格式内容(默认生成)
articles/
├── 文章标题_1627834567.html # 原始HTML
├── 文章标题_1627834567.md # Markdown格式
└── 文章标题_1627834567_info.json # 元数据信息
{
"title": "文章标题",
"author": "作者名称",
"publish_time": "2023-07-30",
"url": "https://example.com/article",
"html_file": "文章标题_1627834567.html",
"fetch_time": "2023-07-30 12:34:56"
}- wx公众号 (mp.weixin.qq.com)
- 大部分基于标准 HTML 结构的博客和新闻网站
WeSpy 使用智能算法尝试从以下元素中提取内容:
<article>标签- 带有
content、article-content、post-content等 class 的元素 <main>标签- 标准的 meta 标签信息
wespy [-h] [-o OUTPUT] [-v] [--html] [--json] [--all] url
获取文章内容并转换为Markdown
positional arguments:
url 文章URL
optional arguments:
-h, --help 显示帮助信息
-o OUTPUT, --output OUTPUT
输出目录 (默认: articles)
-v, --verbose 显示详细信息
--html 同时保存HTML文件
--json 同时保存JSON信息文件
--all 保存所有格式文件 (HTML, JSON, Markdown)
- 默认行为:只生成 Markdown 文件
--html:生成 Markdown + HTML 文件--json:生成 Markdown + JSON 文件--all:生成所有格式文件(HTML + JSON + Markdown)
- Python 3.6+
- requests >= 2.20.0
- beautifulsoup4 >= 4.9.0
git clone https://github.com/tianchang/wespy.git
cd wespy
pip install -e ".[dev]"python -m pytest tests/black wespy/
flake8 wespy/A: WeSpy 使用 images.weserv.nl 作为代理服务来解决图片防盗链问题。如果仍然无法显示,可能是原图片已被删除或网络问题。
A: WeSpy 对wx公众号有特别优化,对大部分使用标准 HTML 结构的网站都有较好的支持。如果某个网站不支持,欢迎提交 issue。
A: 目前需要通过脚本调用 Python API 来实现批量处理,命令行版本暂不支持批量处理。
欢迎提交 issue 和 pull request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目使用 MIT 许可证。详见 LICENSE 文件。
- 改进输出格式配置:默认只输出 Markdown 文件
- 新增命令行选项:
--html、--json、--all用于控制输出格式 - 优化交互模式:添加输出格式选择菜单
- 更新 Python API:支持参数化输出格式控制
- 初始版本发布
- 支持wx公众号文章提取
- 支持通用网页文章提取
- 支持 HTML/JSON/Markdown 多格式输出
- 图片防盗链处理
- 命令行界面
- GitHub: https://github.com/tianchangNorth/WeSpy
- Issues: https://github.com/tianchangNorth/WeSpy/issues
自用🐔场,稳定,线路多,速度快,点这里注册
本项目仅供学习和研究目的使用。使用本工具时,请务必遵守以下原则:
- 用户需自行承担使用本工具的所有风险和责任
- 请确保您的使用行为符合目标网站的robots.txt文件要求
- 尊重内容创作者的知识产权,不得用于商业目的
- 不要对网站服务器造成过大的访问压力
- 请遵守当地法律法规以及目标网站的使用条款
- 不得将本工具用于任何非法或未经授权的活动
- 下载的内容应仅用于个人学习、研究或存档目的
- 网站结构可能随时变化,本工具可能无法正常工作
- 本工具按"原样"提供,不提供任何明示或暗示的保证
- 开发者不对因使用本工具造成的任何损失承担责任
- 本工具不会收集或上传您的任何个人信息
- 所有数据处理都在本地完成
- 请妥善保管您下载的内容
重要提醒: 请合理、合法、负责任地使用本工具,尊重网络服务提供者和内容创作者的权益。