在现代的数字营销和社交扩展中,自动化操作可以显著提高效率。尤其是wx这种广泛使用的即时通讯工具,很多用户有批量添加好友的需求,但手动操作费时费力。本教程将详细介绍如何使用 Python 开发一个自动化工具,帮助你批量添加wx好友。我们将通过一个图形用户界面 (GUI),结合 Excel 文件和微信自动化操作来实现这一需求。
项目概述
这个项目的核心目标是创建一个 Python 程序,可以自动从 Excel 文件中读取微信号和备注信息,然后通过自动化操作微信客户端,实现批量添加好友的功能。项目涉及几个关键技术,包括图形界面、Excel 文件处理和自动化操作等。
项目依赖
为了实现这个项目,我们需要以下 Python 库:
- Tkinter:Python 的标准 GUI 库,用于创建图形用户界面。
- uiautomation:Windows 自动化库,能与微信客户端进行交互。
- Pandas:用于处理 Excel 文件中的微信号和备注数据。
- logging:用于记录程序执行日志,便于调试和错误追踪。
- xlrd2:用于读取 Excel 文件(特别是
.xls
文件)。
安装依赖
首先,确保您已经安装了所需的库。可以通过以下命令在命令行中安装这些库:
pip install uiautomation pandas xlrd2 openpyxl
Tkinter 是 Python 的内置库,无需安装。
项目结构与功能设计
1. Tkinter 界面设计
我们使用 Tkinter 来设计图形用户界面 (GUI)。界面包括以下几个功能模块:
- 微信路径选择:用户选择微信安装路径。
- Excel 文件选择:用户选择包含微信号和备注的 Excel 文件。
- 备注输入:允许用户输入好友备注信息。
- 定时任务设置:用户可以选择定时启动任务。
- 日志显示区域:显示任务执行过程中产生的日志。
1.1 构建 GUI 界面
通过 Tkinter 创建一个简单的主窗口,并添加各种输入框、按钮、文本框等组件。
import tkinter as tk
from tkinter import filedialog, messagebox, ttk, scrolledtext
class WeChatAutoApp:
def __init__(self, master):
self.master = master
self.master.title("微信自动化工具")
self.master.geometry("600x600+300+200") # 设置窗口大小和位置
self.master.configure(bg='#f0f0f0') # 设置背景颜色
# 创建组件
self.create_widgets()
def create_widgets(self):
# 微信安装路径输入框
self.wechat_path_label = ttk.Label(self.master, text="微信安装路径:", background='#f0f0f0')
self.wechat_path_label.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)
self.wechat_path_var = tk.StringVar()
self.wechat_path_entry = ttk.Entry(self.master, width=50, textvariable=self.wechat_path_var)
self.wechat_path_entry.grid(row=0, column=1, padx=10, pady=10)
self.choose_wechat_button = ttk.Button(self.master, text="选择微信", command=self.choose_wechat_path)
self.choose_wechat_button.grid(row=0, column=2, padx=10, pady=10)
# 导入微信账号 Excel 文件
self.excel_path_label = ttk.Label(self.master, text="导入微信账号Excel:", background='#f0f0f0')
self.excel_path_label.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)
self.excel_path_var = tk.StringVar()
self.excel_path_entry = ttk.Entry(self.master, width=50, textvariable=self.excel_path_var)
self.excel_path_entry.grid(row=1, column=1, padx=10, pady=10)
self.choose_excel_button = ttk.Button(self.master, text="选择Excel", command=self.choose_excel_path)
self.choose_excel_button.grid(row=1, column=2, padx=10, pady=10)
# 备注文本框
self.remarks_label = ttk.Label(self.master, text="备注:", background='#f0f0f0')
self.remarks_label.grid(row=2, column=0, padx=10, pady=10, sticky=tk.W)
self.remarks_text = tk.Text(self.master, height=5, width=50)
self.remarks_text.grid(row=2, column=1, padx=10, pady=10)
2. 处理 Excel 文件
在自动化操作前,我们需要读取包含微信号和备注信息的 Excel 文件。可以通过 Pandas
轻松读取这些数据,并进行后续处理。
2.1 读取 Excel 文件
假设 Excel 文件包含两列:微信号和备注。我们使用 pandas.read_excel
读取文件,并将数据存储为一个 DataFrame。
import pandas as pd
def read_excel_file(file_path):
try:
df = pd.read_excel(file_path)
accounts = df['微信号'].tolist() # 从 Excel 表格中读取微信号
names = df['备注'].tolist() # 读取备注信息
return accounts, names
except Exception as e:
print(f"读取 Excel 文件出错: {e}")
return [], []
3. 自动化操作微信
通过 uiautomation
库,我们可以模拟人工操作微信客户端,逐步执行添加好友的任务。
3.1 自动化与微信交互
首先,启动微信客户端,等待其加载完成,然后通过 uiautomation
库找到微信窗口和相应的控件,模拟点击和输入操作。
import uiautomation as auto
import subprocess
import time
def run_automation(wechat_path, accounts, names):
# 启动微信客户端
subprocess.Popen([wechat_path])
time.sleep(10) # 等待微信加载完成
# 查找微信主窗口
wechat_window = auto.WindowControl(searchDepth=1, ClassName='WeChatMainWndForPC', Name='微信')
for account, name in zip(accounts, names):
try:
# 点击通讯录
contacts_button = wechat_window.ButtonControl(Name='通讯录')
contacts_button.Click()
time.sleep(1)
# 点击添加朋友
add_friend_button = wechat_window.ButtonControl(Name='添加朋友')
add_friend_button.Click()
time.sleep(1)
# 输入微信号
search_box = wechat_window.EditControl(Name='微信号/手机号')
search_box.SetValue(account)
time.sleep(1)
# 查找联系人并添加
contact_result = wechat_window.TextControl(Name=account)
contact_result.Click()
time.sleep(1)
# 输入备注并发送请求
add_to_contacts_button = wechat_window.ButtonControl(Name='添加到通讯录')
add_to_contacts_button.Click()
time.sleep(1)
remarks_box = wechat_window.EditControl(Name='')
remarks_box.SendKeys(name)
time.sleep(1)
confirm_button = wechat_window.ButtonControl(Name='确定')
confirm_button.Click()
time.sleep(1)
except Exception as e:
print(f"添加好友 {account} 失败: {e}")
4. 日志记录系统
为了更好地调试和追踪程序运行状态,日志记录是非常重要的。我们使用 logging
库,并通过自定义的日志处理器将日志输出到 GUI 界面的文本框中。
4.1 创建自定义日志处理器
自定义日志处理器继承自 logging.Handler
,将日志消息写入 ScrolledText
控件中,实时显示。
import logging
class CustomHandler(logging.Handler):
def __init__(self, log_text):
super().__init__()
self.log_text = log_text
def emit(self, record):
msg = self.format(record)
self.log_text.configure(state='normal')
self.log_text.insert(tk.END, msg + '\n')
self.log_text.configure(state='disabled')
self.log_text.yview(tk.END)
5. 定时任务
有时,用户希望程序在特定时间运行。我们通过 Tkinter 的 after
方法实现定时任务,用户可以选择任务在特定时间执行。
import datetime
def set_schedule(hour, minute, second):
now = datetime.datetime.now()
scheduled_time = now.replace(hour=int(hour), minute=int(minute), second=int(second))
if scheduled_time < now:
scheduled_time += datetime.timedelta(days=1)
time_until_start = scheduled_time - now
root.after(int(time_until_start.total_seconds() * 1000), start_automation)
6. 程序执行流程
整个程序的执行流程如下:
- 用户通过界面选择微信安装路径和 Excel 文件,输入备注信息。
- 用户可以手动启动任务,或者设置定时任务。
- 程序通过读取 Excel