如何利用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读取Android permission文件
Nov 01 Python
python选择排序算法的实现代码
Nov 21 Python
github配置使用指南
Nov 18 Python
python中input()与raw_input()的区别分析
Feb 27 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
解决python opencv无法显示图片的问题
Oct 28 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
python实现简易学生信息管理系统
Apr 05 Python
python实现坦克大战
Apr 24 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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关联数组的10个操作技巧
2013/01/21 PHP
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
javascript操作css属性
2013/12/30 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
VUE长按事件需求详解
2017/10/18 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
用js编写留言板
2020/03/17 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
任课老师推荐信范文
2013/11/24 职场文书
志愿者服务感言
2014/02/27 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL