如何利用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 相关文章推荐
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
python编程线性回归代码示例
Dec 07 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
如何获取Python简单for循环索引
Nov 21 Python
Python request使用方法及问题总结
Apr 26 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python利用opencv实现颜色检测
Feb 23 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
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Python如何发送与接收大型数组
2020/08/07 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
餐饮业创业计划书范文
2014/01/06 职场文书
六一儿童节活动策划方案
2014/01/27 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
社区敬老月活动总结
2015/05/07 职场文书
董事长致辞
2015/07/29 职场文书
大学学生会竞选稿
2015/11/19 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
python 中yaml文件用法大全
2021/07/04 Python