字节笔记本

2026年2月22日

Python-WeChat-ItChat:微信自动化工具集

本文介绍 Python-WeChat-ItChat 项目,一个基于 itchat 库的微信自动化工具集合,包含监听微信公众号文章、获取好友信息、消息自动回复等实用功能。

项目简介

Python-WeChat-ItChat 是一个开源的微信自动化工具项目,基于 Python 的 itchat 库开发。该项目提供了 11 个实用的微信功能模块,帮助开发者实现微信消息的监听、处理和自动化操作。截至目前,该项目在 GitHub 上已获得 298 stars,Fork 数达 114。

核心功能模块

项目包含以下功能模块:

  • 获取微信好友或微信群分享文章 - 自动捕获好友和群聊中分享的链接
  • 获取微信公众号文章 - 抓取指定公众号的历史文章
  • 监听微信公众号发送的文章 - 实时监控指定公众号的新文章推送
  • 监听微信群或好友撤回的消息 - 捕获被撤回的消息内容
  • 获得微信好友信息以及表图对比 - 分析好友数据并生成可视化图表
  • 打印出微信被删除好友 - 检测并列出已删除你的好友
  • 自动回复好友 - 设置自动回复规则
  • 微信好友个性签名词云图 - 生成好友个性签名的词云可视化
  • 微信好友性别比例 - 统计分析好友性别分布
  • 微信群或好友撤回消息拦截 - 高级消息拦截功能
  • 微信群或好友之间转发消息 - 自动消息转发

技术栈

  • Python 2/3 - 主要编程语言
  • itchat - 微信个人号接口库
  • matplotlib - 数据可视化
  • wordcloud - 词云生成

安装指南

前置要求

  • Python 2.7 或 Python 3.x
  • 微信个人号(已实名认证)

安装依赖

bash
# 安装 itchat 库
pip install itchat

# 安装数据可视化依赖(可选)
pip install matplotlib wordcloud

使用示例

监听指定微信公众号文章

以下代码演示如何监听特定微信公众号推送的文章:

python
# coding=utf-8
import itchat
from itchat.content import *

# 处理微信公众号消息
@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING], isMpChat=True)
def text_reply(msg):
    print(msg)
    
    # 监听指定公众号:PythonCoder
    if itchat.search_mps(name='PythonCoder')[0]["NickName"] == "PythonCoder":
        # MsgType 49 表示分享的文章链接
        if msg["MsgType"] == 49:
            print("监听到指定微信公众号分享的文章链接:")
            print(msg["Url"])
        else:
            print("微信公众号分享的不是文章")
    
    # 可同时监听多个公众号
    elif itchat.search_mps(name='非著名程序员')[0]["NickName"] == "非著名程序员":
        if msg["MsgType"] == 49:
            print("监听到指定微信公众号分享的文章链接:")
            print(msg["Url"])

# 自动登录(启用热加载)
itchat.auto_login(hotReload=True)
# 启动消息监听
itchat.run()

关键代码说明

代码说明
@itchat.msg_register(..., isMpChat=True)注册公众号消息处理器
itchat.search_mps(name='...')搜索指定名称的公众号
msg["MsgType"] == 49消息类型 49 表示图文分享
msg["Url"]获取分享的文章链接
hotReload=True启用热加载,避免重复扫码

注意事项

  1. 微信账号安全 - 频繁操作可能导致账号被限制,建议控制调用频率
  2. 扫码登录 - 首次使用需要手机微信扫码登录
  3. 消息类型 - MsgType 49 表示图文消息,其他类型需参考 itchat 文档
  4. Python 版本 - 示例代码使用 Python 2 语法,Python 3 用户需将 print msg 改为 print(msg)

项目链接

分享: