python之自动发送微信消息

2023-05-16

这篇文章主要是总结最近写自动发送微信消息的python代码时所接触的两个库——pyautogui和pyperclip的用法。

在网上找了很多能实现发送微信消息的方法,其中有使用itchat和wxpy库来实现的,尝试过后发现这两个库都需要通过登录网页微信才能发送,但现在微信几乎都不能登录网页版;后来发现了pyautogui库,这是一个能操控鼠标和键盘的库,所以我就使用了pyautogui库在微信客户端实现消息发送。由于pyautogui库只能键入英文,所以需要与pyperclip搭配使用,可解决中文输入问题,pyperclip充当了剪贴板功能。

一.pyautogui库之前置参数

pyautogui.FAILSAFE=False   
#是否启用自动防故障功能,默认这项功能为True,当鼠标指针在屏幕最左上方时程序报错!

pyautogui.PAUSE=1
#意味着所有的pyautogui指令都要停顿1秒;可以防止键盘鼠标操作太快

二.pyautogui库之鼠标控制

#获取屏幕大小
width,height=pyautogui.size()

#获取鼠标的位置
pyautogui.position()

#鼠标移动
pyautogui.moveTo(x,y,duration=1)   #绝对移动:鼠标移动到(x,y)位置,移动过程持续时间为1秒
pyautogui.moveRel(xoffset,yoffset) #相对移动:相对当前位置向下移动xoffset,向右移动yoffset

#按住左键移动
pyautogui.dragTo(x,y)       #拖动鼠标到(x,y)位置
pyautogui.dragRel(xoffset,yoffset)   #相对当前位置拖动鼠标

#鼠标点击
pyautogui.mouseUp()  #松开鼠标
pyautogui.mouseDown()  #按下鼠标

pyautogui.click(x, y, clicks=1, interval=0.0, button='left/right/middle', duration=1)
#在(x,y)位置点击,clicks表示点击次数,interval表示单击间隔时间,button选择左键/右键/中键点击

pyautogui.rightClick()    #鼠标当前位置右键单击
pyautogui.doubleClick()   #鼠标在当前位置双击
pyautogui.doubleClick(x,y,button='left')  #鼠标在(x,y)位置双击
pyautogui.middleClick()   #鼠标在当前位置中键点击
pyautogui.tripleClick()   #鼠标在当前位置左击3下

pyautogui.click还有一个参数 tween指定缓动/渐变函数,用于改变光标移动过程中的速度和方向,
通常是匀速直线运动,即线性缓动/渐变函数。(pyautogui有30种缓动/渐变函数,可通过pyautogui.ease*?查看)


#鼠标滚动
pyautogui.scroll(10,x=11,y=15)  #鼠标移动到(x,y)位置时向上滚动10格,当为负数时向下滚动
pyautogui.scroll(10) #在当前位置鼠标滚动10格

三.pyautogui库之键盘控制

#输入字符串
pyautogui.typewrite("Hello World!")

#按下并松开某键
pyautogui.press("enter")

#按下和松开
pyautogui.keyDown("Shift")
pyautogui.keyUp("Shift")

#组合按键
pyautogui.hotkey('ctrl',"v")

#复制粘贴解决中文输入问题
pyperclip.copy("你好")
pyautogui.hotkey("ctrl","v")
四.pyautogui库的图像操作

#截全屏并设置保存图片的位置和名称
pyautogui.screenshot("要保存的路径")

#截取区域图片,region设置截取区域的左上角xy坐标值、宽度和高度(x,y,width,height)
pyautogui.screenshot("要保存的路径",region=(0,0,300,400))

#获取文件图片在当前屏幕上的坐标,返回一个元组(top,left,width,height)
a=pyautogui.locateOnScreen("图片文件路径")
x,y=pyautogui.center(a) #获取图片文件在当前屏幕上的中心坐标

x,y=pyautogui.locateCenterOnScreen("图片文件路径")

五.微信发送消息的代码

import pyautogui
import pyperclip
import os
import time
pyautogui.PAUSE=0.5
#在当前屏幕找到图片位置并点击
def mapping_img(img):
    image_l=pyautogui.locateOnScreen(img,grayscale=True)  #获取在当前屏幕的图片的位置
    if img=='微信搜索框.png':
        center=pyautogui.center(image_l)
        pyautogui.click(center) 
        pyautogui.click(center)  #这里是调试时发现搜索框点击一次点不上,又加了一行
    else:
        center=pyautogui.center(image_l)
        pyautogui.click(center)
        
 #在聊天搜索框输入昵称搜索聊天对象打开和他的对话框   
def chat_user(user):
    if user!='':
        pyperclip.copy(user)
        mapping_img('微信搜索框.png')
        pyautogui.hotkey('ctrl','v')
        #pyautogui.press('enter')
        time.sleep(1)
        pyautogui.moveRel(xOffset=0,yOffset=
80)
        pyautogui.click()
        time.sleep(2)
        
#点击微信窗口的上传文件按钮输入要发送的文件地址并打开,加载到待发送消息框
def readfile(filename):
    pyperclip.copy(filename)
    mapping_img('微信上传文件.png')  #点击微信窗口的“上传文件”按钮
    time.sleep(1)
    pyautogui.hotkey('ctrl','v')
    pyautogui.press('enter')
   
def main(): 
    os.chdir('C:\\Users\\Administrator\\微信图片') 
    #切换路径,微信搜索框和上传文件图片都在此路径
    for dirpath,dirnames,filenames in os.walk("C:\\Users\\Administrator\\Desktop\\总监区数据",topdown=False):
        for name in filenames:
            user_name=name.split("总监")[0]
            path1=os.path.join(dirpath,name)
            if user_name.find("+")!=-1:
                for i in range(user_name.count("+")):
                    user1=user_name.split("+")[i]
                    chat_user(user1)
                    readfile(path1)
                    pyautogui.press('enter')
                    pyperclip.copy("这是程序测试发出的文件,不用理会")
                    pyautogui.hotkey('ctrl','v')
                    pyautogui.press('enter')
            else:
            	chat_user(user_name)
            	readfile(path1)
            	pyautogui.press('enter')
            	pyperclip.copy("这是程序测试发出的文件,不用理会")
            	pyautogui.hotkey('ctrl','v')
            	pyautogui.press('enter')
if __name__=='__main__':
    main()

最后

在学习python中有任何困难不懂的可以微信扫描下方CSDN官方认证二维码加入python交流学习
多多交流问题,互帮互助,这里有不错的学习教程和开发工具。

python兼职资源+python全套学习资料

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python之自动发送微信消息 的相关文章

  • 如何实现 __eq__ 进行集合包含测试?

    我遇到了一个问题 我将一个实例添加到一个集合中 然后进行测试以查看该对象是否存在于该集合中 我已经覆盖了 eq 但在包含测试期间不会调用它 我必须覆盖吗 hash 反而 如果是这样 我将如何实施 hash 鉴于我需要对元组 列表和字典进行哈
  • Python:使用 string.format() 将单词大写

    是否可以使用字符串格式将单词大写 例如 user did such and such format user foobar 应该返回 Foobar 做了这样那样的事情 请注意 我很清楚 capitalize 但是 这是我正在使用的代码 非常
  • 如何使用 conda 在一行中安装多个包?

    我需要使用 conda 安装以下多个软件包 我不确定 conda forge 是什么 有些使用 conda forge 有些不使用它 是否可以将它们安装成一行而不需要一一安装 谢谢 conda install c conda forge d
  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • 以矢量化方式在另一个 DataFrame 中查找包含值子集的行

    如何匹配此 DataFrame 中的值source car id lat lon 0 100 10 0 15 0 1 100 12 0 10 0 2 100 09 0 08 0 3 110 23 0 12 0 4 110 18 0 32 0
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • Pandas 连接问题:列重叠但未指定后缀

    我有以下数据框 print df a mukey DI PI 0 100000 35 14 1 1000005 44 14 2 1000006 44 14 3 1000007 43 13 4 1000008 43 13 print df b
  • 通用详细视图 ProfileView 必须使用对象 pk 或 slug 调用

    我是 Django 2 0 的新手 在访问我的个人资料页面视图时收到此错误 它适用于像这样的网址path users
  • 对于相同的查询,MySQL Workbench 比 Python 快得多

    MySQL Workbench 中的以下查询需要 0 156 秒才能完成 SELECT date time minute price id FROM minute prices WHERE contract id 673 AND TIMES
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • 如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL?

    我是 Django 新手 目前正在尝试使用另一个数据库来保存我的模型 即MS SQL 我的数据库部署在docker容器中 903876e64b67 microsoft mssql server linux bin sh c opt mssq
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 计算 pyspark df 列中子字符串列表的出现次数

    我想计算子字符串列表的出现次数 并根据 pyspark df 中包含长字符串的列创建一个列 Input ID History 1 USA UK IND DEN MAL SWE AUS 2 USA UK PAK NOR 3 NOR NZE 4
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in

随机推荐

  • ssh免密登录设置方法

    1 前提条件 主机A xff0c 用户名为aris xff0c IP地址为192 168 1 1主机B xff0c 用户名为leon xff0c IP地址为192 168 1 2这两台主机上均安装了SSH服务器 xff0c 且已经打开ssh
  • 软考高项你想要的全在这

    2021年准备参加软考获取高级职业技术资格认证的小伙伴咱们约起吧 xff1f xff01 自软考系列文章发表之后有很多准备参加软考的小伙伴加我微信 xff0c 关注我的微博 xff0c 也有很多因此成了好朋友 xff0c 甚至是同事 自前年
  • Makefile语法及通用模板

    简介 xff1a 本文主要讲解了在开发常规项目时 xff0c 用于自动化部署生成目标文件的Makefile 对其包含的主要语法进行了讲解 xff0c 最后给出了一个项目通用的Makefile模板 xff0c 以帮助大家理解 1 Makefi
  • ubuntu镜像源的配置

    摘要 xff1a 你是否遇到过按照网上教程更改了自己的镜像源之后 xff0c 貌似还是不兼容 xff0c 许多安装包还是下不了 xff1f 其实不是他们写的教程有错误 xff0c 而是你没用根据自己使用的ubuntu的版本去正确配置镜像源
  • Linux中与“内核模块”相关的数据结构

    摘要 本文详细解释了linux中与模块相关的内核数据结构 xff0c 便于大家在学习理解内核源码或驱动编程中理解相应代码和思想 三 内核模块相关的数据结构 目录 THIS MODULE宏module结构体module use 3 1 THI
  • Linux内核中与“文件系统”相关的数据结构

    文件系统相关的数据结构 4 1 file结构体 文件结构体代表一个打开的文件 xff0c 系统中的每个打开的文件在内核空间都有一个关联的struct file 它由内核在打开文件时创建 xff0c 并传递给在文件上进行操作的任何函数 在文件
  • 【可解释AI】图神经网络的可解释性方法及GNNexplainer代码示例

    图神经网络的可解释性方法及GNNexplainer代码示例 GNNExplainerIntroductionModelSingle instance explanations xff08 Explanation via Structural
  • 文本编辑器VI命令详解

    目录 一 xff1a 文本编辑器概述 1 文本编辑器含义 2 文本编辑器的作用 3 Linux中最常见的文本编辑器 二 vi编辑器的工作模式 1 vi编辑器的工作模式 2 各模式之间的切换 三 xff1a 命令模式概述 1 命令模式常用操作
  • Linux中与“内核安全”相关的数据结构

    五 内核安全相关数据结构 5 1 security operations结构体 这是一个钩子函数的指针数组 xff0c 其中每一个数组元素都是一个SELINUX安全钩子函数 xff0c 在2 6以上的内核中 xff0c 大部分涉及安全控制的
  • 洛谷 P3366 【模板】最小生成树

    题目描述 如题 xff0c 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 输入输出格式 输入格式 xff1a 第一行包含两个整数N M xff0c 表示该图共有N个结点和M条无向边 xff
  • 关于网站最近出现504错误的总结,too open many files in system

    如果你有耐心看完这篇文章 xff0c 也许会给你带来真正的益处 网站出现504错误 xff0c 如果你用阿里云CDN的话还会报 504 Gateway Time out The gateway did not receive a timel
  • Manjaro21安装VNC,Win10远程连接manjaro桌面

    manjaro安装tigervnc xff0c win10使用VNC viewer TigerVNC 简体中文 ArchWiki archlinux org https wiki archlinux org title TigerVNC E
  • Proxmox虚拟环境搭建

    一 Proxmox VE简介 ProxmoxVE 是一个完整的 开源的企业虚拟化服务器管理平台 它在单个平台上紧密集成了 KVM 管理程序和 Linux 容器 LXC 软件定义的存储和网络功能 通过集成的基于 web 的用户界面 xff0c
  • HEX2DEC存储过程实现

    数据库当前有十进制转换为十六进制的函数hex 函数 xff0c 却没有十六进制转换为十进制的函数 xff0c 只能自己定义一个hex2dec xff0c 存储过程如下 xff1a span class token keyword drop
  • SQLite数据类型引起的问题——全数字字符串使用varchar出现错误

    问题 xff1a 项目中需要把某些数据保存到Android的数据库中 xff0c 因为保存的字符串全部为数字形式 xff0c SQLite把部分字符串自动转化为了科学技术法导致数据显示异常 xff0c 同时还把一些开头为0的字符串自动去掉了
  • IOS 自定义UIAlertController

    自定义UIAlertController xff1a 首先展示效果图 1 创建一个新的类来管理弹出的视图 继承于UIView 2 传建一个xib文件来自定义弹出视图 xff08 注意创建过后一定要将xib的class关联 xff09 3 在
  • python把txt文件里重复数据去重代码

    有时候会发现txt文件里有很多重复数据 xff0c 这里自写了一个去重的python程序 xff0c 供学习使用 xff01 def quchong print 39 39 50 print 39 导入txt文件中 39 num 61 0
  • ERROR 1064 (42000): You have an error in your SQL

    对于新手来说 xff0c MySQL数据库 xff0c 在命令行使用sql语句进行建库 xff0c 查库 xff0c 建表 xff0c 查表 时 xff0c MySQL 报错 xff1a ERROR 1064 42000 You have
  • 【图神经网络】GNNExplainer代码解读及其PyG实现

    GNNExplainer代码解读及其PyG实现 使用GNNExplainerGNNExplainer源码速读前向传播损失函数 基于GNNExplainer图分类解释的PyG代码示例参考资料 接上一篇博客图神经网络的可解释性方法及GNNexp
  • python之自动发送微信消息

    这篇文章主要是总结最近写自动发送微信消息的python代码时所接触的两个库 pyautogui和pyperclip的用法 在网上找了很多能实现发送微信消息的方法 xff0c 其中有使用itchat和wxpy库来实现的 xff0c 尝试过后发