如何利用python之wxpy模块玩转微信


Posted in Python onAugust 17, 2020

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

bot = Bot(cache_path= True)

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

my_friends.stats_text()

效果如图

如何利用python之wxpy模块玩转微信

利用下面两行代码我们可以给微信好友发送信息

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

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

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)#由于发送消息太快最后加上一个延迟

功能三:消息轰炸

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

我这里是发了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)

效果如图:

如何利用python之wxpy模块玩转微信

功能五:头像拼接
下面展示一些 内联代码片

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('已完成')

path就是上面获得头像的path,这串代码是借鉴别的大神的

如何利用python之wxpy模块玩转微信

最后我把代码整合在了一起并加上了按钮和界面,如下图

如何利用python之wxpy模块玩转微信

输入的用户名可以是备注也可以是原名,然后群发的消息也是放在第二行点击一下就好了,好友信息会以txt的文件存放,好友图片会放在文件夹里,虽然亚子有点丑

如何利用python之wxpy模块玩转微信

最后我也打包成了exe文件,可以直接执行

如何利用python之wxpy模块玩转微信
如何利用python之wxpy模块玩转微信

最后附上完整代码
下面展示一些 内联代码片

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()

总结

到此这篇关于利用python之wxpy模块玩转微信的文章就介绍到这了,更多相关python wxpy模块玩转微信内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
python实现简单颜色识别程序
Feb 19 Python
python datetime处理时间小结
Apr 16 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
如何Python使用re模块实现okenizer
Apr 30 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 #Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 #Python
python如何操作mysql
Aug 17 #Python
详解python 内存优化
Aug 17 #Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 #Python
详解Python 中的容器 collections
Aug 17 #Python
Python 解析库json及jsonpath pickle的实现
Aug 17 #Python
You might like
PHP中for与foreach的区别分析
2011/03/09 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
js运动应用实例解析
2015/12/28 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python绘制七段数码管实例代码
2017/12/20 Python
学习python的前途 python挣钱
2019/02/27 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
岗位职责风险防控
2014/02/18 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
报效祖国演讲稿
2014/09/15 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
浅谈PHP7中的一些小技巧
2021/05/29 PHP
用Python可视化新冠疫情数据
2022/01/18 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
MySQL 原理与优化之Update 优化
2022/08/14 MySQL