下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
这个工具提供了完整的微信群成员导出功能,包括登录微信、获取群列表、导出成员信息到Excel等功能。使用时需要先安装itchat和pandas库。
!/usr/bin/env python3
-- coding: utf-8 --
import itchat
import pandas as pd
from datetime import datetime
import os
import time
class WeChatGroupExporter:
def init(self):
self.output_dir = "wechat_group_exports"
self.login_status = False
self.groups_list = []
def create_output_dir(self):
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
def login(self):
print("正在登录微信...")
itchat.auto_login(hotReload=True, statusStorageDir='itchat.pkl')
self.login_status = True
print("登录成功!")
def get_groups(self):
if not self.login_status:
print("请先登录!")
return
self.groups_list = itchat.get_chatrooms(update=True)
if not self.groups_list:
print("没有获取到任何群聊信息")
return
print(f"共获取到 {len(self.groups_list)} 个群聊")
def export_group_members(self, group_name=None):
if not self.login_status:
print("请先登录!")
return
if not self.groups_list:
print("没有可导出的群聊信息")
return
self.create_output_dir()
if group_name:
target_groups = [g for g in self.groups_list if group_name in g['NickName']]
if not target_groups:
print(f"未找到包含 '{group_name}' 的群聊")
return
else:
target_groups = self.groups_list
for group in target_groups:
try:
print(f"正在处理群聊: {group['NickName']}")
group = itchat.update_chatroom(group['UserName'], detailedMember=True)
members_data = []
for member in group['MemberList']:
member_info = {
'群名称': group['NickName'],
'用户名': member.get('UserName', ''),
'昵称': member.get('NickName', ''),
'显示名': member.get('DisplayName', ''),
'备注名': member.get('RemarkName', ''),
'性别': self.get_gender(member.get('Sex', 0)),
'省份': member.get('Province', ''),
'城市': member.get('City', ''),
'签名': member.get('Signature', '')
}
members_data.append(member_info)
if members_data:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{group['NickName']}_成员_{timestamp}.xlsx"
safe_filename = "".join([c for c in filename if c.isalpha() or c.isdigit() or c in ' _-']).rstrip()
filepath = os.path.join(self.output_dir, safe_filename)
df = pd.DataFrame(members_data)
df.to_excel(filepath, index=False, encoding='utf-8')
print(f"成功导出 {len(members_data)} 位成员到 {filepath}")
else:
print(f"群聊 {group['NickName']} 没有成员数据")
time.sleep(2) # 避免请求过于频繁
except Exception as e:
print(f"处理群聊 {group['NickName']} 时出错: {str(e)}")
continue
def get_gender(self, sex_code):
gender_map = {0: '未知', 1: '男', 2: '女'}
return gender_map.get(sex_code, '未知')
def run(self):
self.login()
self.get_groups()
self.export_group_members()
if name == "main":
exporter = WeChatGroupExporter()
exporter.run()