社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

利用python之wxpy模块玩转微信

白胡子是这个世界上最猛的男人 • 5 年前 • 418 次点击  

wxpy也是一个python的模块,利用它我们可以做很多有意思的事情
首先利用一句代码我们就可以利用python登录网页版微信

bot = Bot(cache_path= True)
  • 1

这条语句会产生一个二维码,我们扫描了这个二维码之后就可以登录我们的微信了
功能一:获得微信好友信息
利用一行语句获得你微信好友的个数、男女比例、TOP10省份及TOP10城市

my_friends.stats_text()
  • 1

效果如图
在这里插入图片描述
利用下面两行代码我们可以给微信好友发送信息

friends = my_friends.search('你想要发送的人名')[0]
friends.send('你想要发送的信息')
  • 1
  • 2

所以衍生了下面两个功能
功能二:群发消息

my_friend = bot.friends()
for i in my_friend[1:]:
    a = i.name
    friend = my_friend.search(a)[0]
    print('正在发送',friend)
    friend.send('')#你想要发送的内容
    print('ok')
    time.sleep(1)#由于发送消息太快最后加上一个延迟

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

功能三:消息轰炸

friends = my_friends.search('你想要发送的人名')[0]
for i in range(50):
    friends.send('你想要发送的信息')
  • 1
  • 2
  • 3

我这里是发了50遍,记得加上time.sleep(),要是发送太快会被禁止发信息的
功能四:获得好友头像
利用friend.get_avatar函数

def CREATE_PICPATHT():
    path = os.getcwd() +"\\pic\\"
    if not os.path.exists(path):
        os.mkdir(path)
        return path
def IMAGE_SAVE(path):
    my_friends = bot.friends()
    num = 0
    for friend in my_friends:
        print(friend.name)
        friend.get_avatar(path + '\\' + str(num) + ".jpg")
        num = num + 1
path = CREATE_PICPATHT()
IMAGE_SAVE(path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

效果如图:
在这里插入图片描述
功能五:头像拼接
下面展示一些 内联代码片

def PJ_IMAGE(path):
    length = len(os.listdir(path))
    image_size = 2560
    each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
    x_lines = math.ceil(math.sqrt(length))
    y_lines = math.ceil(math.sqrt(length))
    image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))
    x = 0
    y = 0
    for (root, dirs, files) in os.walk(path):
        for pic_name in files:
            try:
                with Image.open(path + pic_name) as img:
                    img = img.resize((each_size, each_size))
                    image.paste(img, (x * each_size, y * each_size))
                    x += 1
                    if x == x_lines:
                        x = 0
                        y += 1
            except IOError:
                print("头像读取失败")
        img = image.save(os.getcwd() +"/wechat.png")
        print('已完成')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

path就是上面获得头像的path,这串代码是借鉴别的大神的
在这里插入图片描述
最后我把代码整合在了一起并加上了按钮和界面,如下图
在这里插入图片描述
输入的用户名可以是备注也可以是原名,然后群发的消息也是放在第二行点击一下就好了,好友信息会以txt的文件存放,好友图片会放在文件夹里,虽然亚子有点丑 在这里插入图片描述
最后我也打包成了exe文件,可以直接执行
在这里插入图片描述
在这里插入图片描述
最后附上完整代码
下面展示一些 内联代码片




    
from wxpy import *
import os
import tkinter as tk
import  tkinter
import math
from PIL import Image
import  time
window = tkinter.Tk()
window.title('微信')
window.geometry("800x480")
bot = Bot(cache_path= True)
l1 = tk.Label(window, text="第一行输入用户名第二行输入信息",
              font=("黑体", 10))
l1.pack()
ask_text = tk.Entry(background = 'orange')
ask_text.pack()
ask_text1 = tk.Entry(background = 'pink')
ask_text1.pack()
def onclick():
    a = ask_text.get()
    my_friends = bot.friends()
    friends = my_friends.search(a)
    return friends[0]
def onclick1():
    a = ask_text1.get()
    return a
def CREATE_PICPATHT():
    path = os.getcwd() +"\\pic\\"
    if not os.path.exists(path):
        os.mkdir(path)
        return path
def IMAGE_SAVE(path):
    my_friends = bot.friends()
    num = 0
    for friend in my_friends:
        print(friend.name)
        friend.get_avatar(path + '\\' + str(num) + ".jpg")
        num = num + 1
def CREATE_TXTPATH():
    a = os.getcwd()
    filename = a + '\用户信息' + '.txt'
    return filename
def GET_FriendSTXT(filenmame):
    my_friend = bot.friends()
    with open(filenmame,'w') as f:
        f.write(my_friend.stats_text())
    print('ok')
def SEARCH_FRIENDS(name):
    my_friends = bot.friends()
    friends = my_friends.search(name)
    return friends[0]
def SEND_MESSAGES(friends,message):
    friends.send(message)
def func():
    path = CREATE_TXTPATH()
    GET_FriendSTXT(path)
def func1():
    path = CREATE_PICPATHT()
    IMAGE_SAVE(path)
    PJ_IMAGE(path)
def func2():
    a = onclick()
    b = onclick1()
    a.send(b)
    print('发送成功')
def func3():
    for i in range(50):
        time.sleep(1)
        func2()
def PJ_IMAGE(path):
    length = len(os.listdir(path))
    image_size = 2560
    each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
    x_lines = math.ceil(math.sqrt(length))
    y_lines = math.ceil(math.sqrt(length))
    image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))
    x = 0
    y = 0
    for (root, dirs, files) in os.walk(path):
        for pic_name in files:
            try:
                with Image.open(path + pic_name) as img:
                    img = img.resize((each_size, each_size))
                    image.paste(img, (x * each_size, y * each_size))
                    x += 1
                    if x == x_lines:
                        x = 0
                        y += 1
            except IOError:
                print("头像读取失败")
        img = image.save(os.getcwd() +"/wechat.png")
        print('已完成')

def func4():
    my_friend = bot.friends()
    b = onclick1()
    for i in my_friend[1:]:
        a = i.name
        friend = my_friend.search(a)[0]
        print('正在发送', friend)
        friend.send(b)  # 你想要发送的内容
        print('ok')
        time.sleep(1)
window.bind('<Return>', onclick)
click_button = tkinter.Button(window,
                              text = '获取好友信息',
                              background = 'purple',
                              width = 10,
                              height = 4,
                              command = func)

click_button.pack(side = 'left')
click_button1 = tkinter.Button(window,
                              text = '获取好友图片',
                              background = 'green',
                              width = 10,
                              height = 4,
                              command = func1)
click_button1.pack(side = 'right')
click_button2 = tkinter.Button(window,
                              text = '点击发送信息',
                              background = 'blue',
                              width = 10,
                              height = 4,
                              command = func2)
click_button2.pack(side = 'top')
click_button3 = tkinter.Button(window,
                               text ='连续发送五十',
                               background = 'pink',
                               width = 10,
                               height = 4,
                               command = func3)
click_button3.pack()
click_button4 = tkinter.Button(window,
                               text ='群发信息',
                               background = 'grey',
                               width = 10,
                               height = 4,
                               command = func4)

click_button4.pack(side = 'bottom')
window.mainloop()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/72551
 
418 次点击