下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
代码说明:
使用itchat库实现微信登录和群成员信息获取
支持获取群成员的昵称、备注名、WXID、性别、地区等信息
数据导出为CSV格式,按群分组保存
包含错误处理和日志输出功能
使用方法:
安装依赖:pip install -r requirements.txt
运行程序:python wechat_group_export.py
扫描二维码登录微信
程序会自动获取所有微信群成员信息并导出
import itchat
import time
import csv
import os
from datetime import datetime
class WeChatGroupExporter:
def init(self):
self.login_status = False
self.output_dir = "wechat_groupdata"
self.timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
def login(self):
"""登录微信"""
print("正在登录微信...")
itchat.auto_login(hotReload=True, enableCmdQR=2)
self.login_status = True
print("登录成功!")
def get_all_groups(self):
"""获取所有微信群"""
if not self.login_status:
self.login()
print("获取微信群列表...")
groups = itchat.get_chatrooms(update=True)
return groups
def get_group_members(self, group):
"""获取单个群成员信息"""
print(f"正在获取群 [{group['NickName']}] 的成员信息...")
members = []
try:
group = itchat.update_chatroom(group['UserName'], detailedMember=True)
for member in group['MemberList']:
member_info = {
'GroupName': group['NickName'],
'NickName': member['NickName'],
'DisplayName': member['DisplayName'] or '',
'RemarkName': member['RemarkName'] or '',
'WXID': member['UserName'],
'Province': member['Province'] or '',
'City': member['City'] or '',
'Sex': self.get_gender(member['Sex']),
'Signature': member['Signature'] or '',
'JoinTime': time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(member['AttrStatus']))
}
members.append(member_info)
except Exception as e:
print(f"获取群成员信息失败: {str(e)}")
return members
def get_gender(self, sex):
"""获取性别"""
if sex == 1:
return "男"
elif sex == 2:
return "女"
else:
return "未知"
def export_to_csv(self, data, filename):
"""导出数据到CSV文件"""
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
filepath = os.path.join(self.output_dir, f"{filename}_{self.timestamp}.csv")
try:
with open(filepath, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print(f"数据已成功导出到: {filepath}")
except Exception as e:
print(f"导出数据失败: {str(e)}")
def run(self):
"""主运行方法"""
try:
self.login()
groups = self.get_all_groups()
print(f"共找到 {len(groups)} 个微信群")
for group in groups:
members = self.get_group_members(group)
if members:
self.export_to_csv(members, f"group_{group['NickName']}")
print("所有微信群成员信息导出完成!")
except KeyboardInterrupt:
print("\n用户中断操作")
except Exception as e:
print(f"程序运行出错: {str(e)}")
finally:
itchat.logout()
if name == "main":
exporter = WeChatGroupExporter()
exporter.run()
itchat==1.3.10
pyqrcode==1.2.1
Pillow==9.0.0