skills/liuzln/openclaw-skills/wechat-article-fetcher

wechat-article-fetcher

SKILL.md

WeChat Article Fetcher Skill

微信公众号文章爬取 Skill,支持任意微信公众号文章 URL,自动下载图片,导出 JSON,保存完整截图。

功能特性

  • ✅ 支持任意微信公众号文章 URL
  • ✅ 自动提取标题、作者、发布时间
  • ✅ 提取完整文章内容
  • ✅ 自动下载并保存文章图片
  • ✅ 保存完整页面截图
  • ✅ 导出 JSON 格式结果
  • ✅ 支持虚拟环境(如 playwright-env)
  • ✅ 无头模式(无 UI 服务器部署)
  • ✅ 命令行工具支持

快速开始

1. 使用命令行工具

# 爬取单篇文章
python3 skills/wechat-article-fetcher/scripts/fetch.py \
  https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw

# 指定输出目录
python3 skills/wechat-article-fetcher/scripts/fetch.py \
  https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw \
  --output ./my_articles

# 不保存图片
python3 skills/wechat-article-fetcher/scripts/fetch.py \
  https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw \
  --no-images

2. 使用虚拟环境运行

# 方式 1: 激活虚拟环境后运行
source playwright-env/bin/activate
python3 skills/wechat-article-fetcher/scripts/fetch.py <url>

# 方式 2: 使用提供的包装脚本
python3 skills/wechat-article-fetcher/scripts/run_in_venv.py \
  <url> --venv /path/to/playwright-env

3. 在代码中使用

from wechat_article_fetcher import fetch_article

# 爬取文章
result = fetch_article("https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw")

print(f"标题: {result['title']}")
print(f"作者: {result['author']}")
print(f"内容长度: {result['length']}")
print(f"图片数量: {result['images_count']}")

命令行工具

fetch.py - 主要爬取工具

python3 skills/wechat-article-fetcher/scripts/fetch.py [OPTIONS] URL

参数:
  URL                   微信公众号文章 URL(必需)

选项:
  -o, --output PATH     输出目录(默认: ./wechat_articles)
  --no-images           不保存图片
  --no-screenshot       不保存截图
  --headless BOOLEAN    无头模式(默认: true)
  --timeout INTEGER     超时时间(毫秒,默认: 60000  -h, --help            显示帮助信息

batch_fetch.py - 批量爬取工具

# 从文件中读取 URL 列表
python3 skills/wechat-article-fetcher/scripts/batch_fetch.py \
  --urls-file urls.txt

# 或者直接在命令行指定多个 URL
python3 skills/wechat-article-fetcher/scripts/batch_fetch.py \
  --urls "url1" "url2" "url3"

run_in_venv.py - 虚拟环境运行工具

python3 skills/wechat-article-fetcher/scripts/run_in_venv.py \
  <url> --venv /path/to/playwright-env

输出说明

每次爬取会创建一个以时间戳命名的目录:

wechat_articles/
└── 20260302_125500/
    ├── article.json          # JSON 格式结果
    ├── article.png           # 完整页面截图
    └── images/               # 文章图片目录
        ├── 001_image1.jpg
        ├── 002_image2.png
        └── ...

article.json 结构

{
  "title": "文章标题",
  "author": "作者名称",
  "publish_date": "2026-03-02",
  "url": "https://mp.weixin.qq.com/s/...",
  "content": "完整文章内容...",
  "images": [
    {
      "index": 1,
      "url": "https://mmbiz.qpic.cn/...",
      "alt": "图片描述",
      "filename": "001_image.jpg",
      "success": true
    }
  ],
  "images_count": 5,
  "images_dir": "wechat_articles/20260302_125500/images",
  "fetch_time": "2026-03-02T12:55:00.000000",
  "length": 15000
}

配置文件

可以创建 config.json 来自定义默认配置:

{
  "headless": true,
  "timeout": 60000,
  "output_dir": "./wechat_articles",
  "save_images": true,
  "save_screenshot": true,
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."
}

使用示例

示例 1: 爬取单篇文章

python3 skills/wechat-article-fetcher/scripts/fetch.py \
  https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw

示例 2: 批量爬取

创建 urls.txt

https://mp.weixin.qq.com/s/xxx
https://mp.weixin.qq.com/s/yyy
https://mp.weixin.qq.com/s/zzz

然后运行:

python3 skills/wechat-article-fetcher/scripts/batch_fetch.py \
  --urls-file urls.txt

示例 3: 在虚拟环境中使用

python3 skills/wechat-article-fetcher/scripts/run_in_venv.py \
  https://mp.weixin.qq.com/s/HTGvy5C6SYyr5XQhTfTfzw \
  --venv /home/user/playwright-env

最佳实践

  1. 使用虚拟环境: 隔离依赖,避免冲突
  2. 合理设置超时: 根据网络情况调整
  3. 批量爬取时添加延迟: 避免给服务器造成压力
  4. 定期检查输出: 确保图片和内容完整
  5. 遵守 robots.txt: 尊重网站的爬取规则

故障排除

问题: 找不到模块

解决方案: 确保在正确的虚拟环境中运行,或安装依赖:

pip install playwright
playwright install chromium

问题: 浏览器无法启动

解决方案: 安装系统依赖:

sudo apt install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \
  libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 \
  libxfixes3 libxrandr2 libgbm1 libasound2

问题: 图片下载失败

解决方案: 检查网络连接,或使用 --no-images 跳过图片下载。

问题: 页面加载超时

解决方案: 增加超时时间:

python3 skills/wechat-article-fetcher/scripts/fetch.py \
  <url> --timeout 90000

相关资源

更新日志

v1.0.0

  • 初始版本
  • 支持单篇文章爬取
  • 支持图片下载
  • 支持 JSON 导出
  • 支持完整页面截图
  • 支持虚拟环境
  • 提供命令行工具
  • 提供批量爬取工具
Weekly Installs
5
First Seen
6 days ago
Installed on
github-copilot5
codex5
kimi-cli5
gemini-cli5
amp5
cline5