最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息)

 更新時(shí)間:2023年09月22日 14:56:13   作者:専心  
這篇文章主要介紹了Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息),我們使用的第三方包是UIAutomation,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

一.效果展示

二.前言介紹

我們使用的第三方包是:UIAutomation

UIAutomation的簡(jiǎn)介:UIAutomation 是一種自動(dòng)化測(cè)試框架,它可以模擬用戶在應(yīng)用程序圖形用戶界面上的操作,并提供對(duì)應(yīng)用程序界面的元素的完整訪問(wèn)。該框架最初由 Microsoft 開(kāi)發(fā),旨在為 Microsoft Windows 平臺(tái)上的應(yīng)用程序自動(dòng)化測(cè)試提供一種標(biāo)準(zhǔn)化的方法。UIAutomation 框架允許測(cè)試人員編寫(xiě)自動(dòng)化測(cè)試腳本,以便在應(yīng)用程序的不同版本和環(huán)境中對(duì)其進(jìn)行可靠的測(cè)試。這種自動(dòng)化測(cè)試方法可以提高測(cè)試的速度和準(zhǔn)確性,并減少了人工測(cè)試的負(fù)擔(dān)。

總之UIAutomation的功能還是非常強(qiáng)大的,我們這次拿他來(lái)小試牛刀

三.進(jìn)入正題

1.需要用到的包

我們要實(shí)現(xiàn)對(duì)收到的信息進(jìn)行分析判斷,我們首先需要將文本內(nèi)容存儲(chǔ)到本地,我們這次使用的是:csv文件,就是Excel文件,所以我們要解析對(duì)應(yīng)的文件,就需要安裝對(duì)應(yīng)的包。

安裝UIAutomation

pip install uiautomation

安裝pandas包,用來(lái)讀取csv數(shù)據(jù)

pip install pandas

安裝numpy包,目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表

pip install numpy

2.下面進(jìn)入到代碼的部分

2.1導(dǎo)入所需要用到的包

import numpy as np  # 引入numpy庫(kù),目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表
import pandas as pd  # 引入pandas庫(kù),用來(lái)讀取csv數(shù)據(jù)
from uiautomation import WindowControl  # 引入uiautomation庫(kù)中的WindowControl類,用來(lái)進(jìn)行圖像識(shí)別和模擬操作

2.2定義微信窗口控件 

wx = WindowControl(
    Name='微信',
    # searchDepth=1
)

這里我們定義了一個(gè)窗口控件WX,它表示的是微信應(yīng)用的主窗口。通過(guò) WindowControl 類的構(gòu)造函數(shù),傳遞給它窗口的名稱 Name=‘微信’,它會(huì)在屏幕上查找并綁定微信應(yīng)用的主窗口。也可以使用  searchDepth  參數(shù)來(lái)設(shè)置搜索窗口控件的深度。

2.3調(diào)用尋找微信控件的方法

wx.ListControl()
wx.SwitchToThisWindow()

這里使用了wx.ListControl()函數(shù),它的作用是尋找窗口控件中的會(huì)話列表。然后調(diào)用wx.SwitchToThisWindow()函數(shù),將微信應(yīng)用切換到當(dāng)前窗口,也就是將微信界面顯示到最上層。

2.3綁定窗口的會(huì)話列表控件并讀取數(shù)據(jù)

hw = wx.ListControl(Name='會(huì)話')
df = pd.read_csv('回復(fù)數(shù)據(jù).csv', encoding='GBK')

這里獲取綁定窗口的會(huì)話列表控件,并將其賦值給  hw ,在后續(xù)代碼中使用。然后使用 pandas 庫(kù)中的  read_csv()  函數(shù)讀取名為“回復(fù)數(shù)據(jù).csv”的 csv 文件,并設(shè)置編碼格式為 GBK,將讀取到的數(shù)據(jù)存儲(chǔ)在 pandas 的 DataFrame 對(duì)象  df  中。

可以看到此時(shí)的數(shù)據(jù)就是一個(gè)列表,就跟excel表格一樣

 在編譯器中看到的文件中的數(shù)據(jù)是這樣的:

2.4使用while True:死循環(huán)監(jiān)聽(tīng)信息

while True:
    # 獲取未讀消息控件we
    we = hw.TextControl(searchDepth=4)
    # 死循環(huán)直到獲取未讀消息
    while not we.Exists():
        pass

這里使用了 while循環(huán),一直監(jiān)聽(tīng)微信群或私聊中的消息。當(dāng)有新消息出現(xiàn)時(shí),獲取未讀消息控件,并使用 while循環(huán)等待,直到獲取到未讀消息為止。serchDepth=4是表示我們只監(jiān)聽(tīng)最上面的四個(gè)好友或群聊

2.5獲取最新的信息

last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name

在上面的 while 循環(huán)中,如果有新消息,就會(huì)執(zhí)行這行代碼,通過(guò)  wx.ListControl()  函數(shù)獲取最新一條消息的窗口控件,將其名字存儲(chǔ)到  last_msg  變量中。注意我們這里只會(huì)設(shè)置了只會(huì)獲取到最后一次信息,如果想修改只要修改下標(biāo)即可

2.6進(jìn)入循環(huán)做的一些操作

  # 存在未讀消息
    if we.Name:
        # 點(diǎn)擊未讀消息
        we.Click(simulateMove=False)
        # 讀取最后一條消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        # 判斷關(guān)鍵字
        msg = df.apply(lambda x: x['回復(fù)內(nèi)容'] if x['關(guān)鍵詞'] in last_msg else None, axis=1)
        print(msg)
        # 數(shù)據(jù)篩選,移除空數(shù)據(jù)
        msg.dropna(axis=0, how='any', inplace=True)
        # 做成列表
        ar = np.array(msg).tolist()

上面的代碼首先是使用wc.Click()點(diǎn)擊事件,點(diǎn)擊到未讀信息的用戶對(duì)話框中,使用  apply()  函數(shù)從讀取到的 csv 文件中查找是否包含  last_msg  中的關(guān)鍵詞。該函數(shù)使用了給定的 lambda 函數(shù),對(duì)  df  DataFrame 表格中的每一行進(jìn)行遍歷,并返回符合條件的行,然后篩選出數(shù)據(jù),使用  dropna()  函數(shù)刪除無(wú)效數(shù)據(jù)(即值為 None 的行),利用  np.array()  函數(shù)將 DataFrame 對(duì)象轉(zhuǎn)換為 numpy 數(shù)組,再使用  tolist()  函數(shù)將其轉(zhuǎn)換為 Python 列表。將處理后的列表存儲(chǔ)在名為  ar  的變量中。

2.7回復(fù)信息

    # 能夠匹配到數(shù)據(jù)時(shí)
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號(hào)
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=0)
            # 通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒(méi)有匹配到數(shù)據(jù)時(shí)
        else:
            wx.SendKeys('我不理解你什么意思', waitTime=1)
            wx.SendKeys('{Enter}', waitTime=0)
            wx.TextControl(SubName=last_msg[:5]).RightClick(10)

 上面就是回復(fù)信息了,wx.SendKeys(‘{Shift}{Enter}’)就是將ar列表中的數(shù)據(jù)輸入到對(duì)話框中,waitTime是設(shè)置它的等待時(shí)間,wx.SendKeys'{Enter}'就是響應(yīng)回車鍵,將信息發(fā)送出去,waitTime也是等待時(shí)間,wx.TextControl(SubName=ar[0][:5]).RightClick()的作用就是通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人,也就是實(shí)現(xiàn)一個(gè)鼠標(biāo)右擊功能:

  • wx.TextControl()  函數(shù)用于查找微信窗口中的文本框控件;
  • SubName  參數(shù)用于指定控件的子名稱,即控件的標(biāo)簽名稱;
  • ar[0][:5]  是一個(gè)字符串,它是通過(guò)某種方式獲取的,用于指定要右鍵單擊的文本在文本框中的位置;
  • RightClick()  方法模擬鼠標(biāo)右鍵單擊事件,即在指定的文本位置上單擊鼠標(biāo)右鍵。

四:完整代碼

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import numpy as np  # 引入numpy庫(kù),目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表
import pandas as pd  # 引入pandas庫(kù),用來(lái)讀取csv數(shù)據(jù)
from uiautomation import WindowControl  # 引入uiautomation庫(kù)中的WindowControl類,用來(lái)進(jìn)行圖像識(shí)別和模擬操作
# 綁定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
# 切換窗口
wx.ListControl()
wx.SwitchToThisWindow()
# 尋找會(huì)話控件綁定
hw = wx.ListControl(Name='會(huì)話')
# 通過(guò)pd讀取數(shù)據(jù)
df = pd.read_csv('回復(fù)數(shù)據(jù).csv', encoding='GBK')
print(df)
# 死循環(huán)接收消息
while True:
    # 從查找未讀消息
    we = hw.TextControl(searchDepth=4)
    # 死循環(huán)維持,沒(méi)有超時(shí)報(bào)錯(cuò)
    while not we.Exists():
        pass
    # 存在未讀消息
    if we.Name:
        # 點(diǎn)擊未讀消息
        we.Click(simulateMove=False)
        # 讀取最后一條消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        # 判斷關(guān)鍵字
        msg = df.apply(lambda x: x['回復(fù)內(nèi)容'] if x['關(guān)鍵詞'] in last_msg else None, axis=1)
        print(msg)
        # 數(shù)據(jù)篩選,移除空數(shù)據(jù)
        msg.dropna(axis=0, how='any', inplace=True)
        # 做成列表
        ar = np.array(msg).tolist()
        # 能夠匹配到數(shù)據(jù)時(shí)
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號(hào)
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=1)
            # 通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒(méi)有匹配到數(shù)據(jù)時(shí)
        else:
            wx.SendKeys('我不理解你什么意思', waitTime=1)
            wx.SendKeys('{Enter}', waitTime=1)
            wx.TextControl(SubName=last_msg[:5]).RightClick()

到此這篇關(guān)于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息)的文章就介紹到這了,更多相關(guān)python微信自動(dòng)回復(fù)信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理

    Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理

    在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • python區(qū)分不同數(shù)據(jù)類型的方法

    python區(qū)分不同數(shù)據(jù)類型的方法

    這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實(shí)例以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • Docker?Python官方鏡像使用說(shuō)明(TAG說(shuō)明)及實(shí)戰(zhàn)小貼士

    Docker?Python官方鏡像使用說(shuō)明(TAG說(shuō)明)及實(shí)戰(zhàn)小貼士

    Python是一門(mén)廣泛使用的編程語(yǔ)言,在容器化環(huán)境中,構(gòu)建和使用Python鏡像是非常常見(jiàn)的任務(wù),這篇文章主要介紹了Docker?Python官方鏡像使用說(shuō)明(TAG說(shuō)明)及實(shí)戰(zhàn)小貼士的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • python?序列去重并保持原始順序操作

    python?序列去重并保持原始順序操作

    這篇文章主要介紹了python序列去重并保持原始順序操作,文章圍繞了python?序列去重的相關(guān)資料展開(kāi)詳細(xì)介紹,需要的小伙伴可以參考一下,希望對(duì)你的有所幫助
    2022-03-03
  • 如何在VSCode下使用Jupyter的教程詳解

    如何在VSCode下使用Jupyter的教程詳解

    這篇文章主要介紹了如何在VSCode下使用Jupyter,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python如何寫(xiě)入Pandas DataFrame到CSV文件

    Python如何寫(xiě)入Pandas DataFrame到CSV文件

    Pandas是一個(gè)功能強(qiáng)大的Python數(shù)據(jù)分析庫(kù),常用于處理和分析數(shù)據(jù),CSV文件是一種廣泛使用的數(shù)據(jù)交換格式,Pandas通過(guò)to_csv方法支持將DataFrame寫(xiě)入CSV文件,此方法允許用戶指定分隔符、編碼和選擇性寫(xiě)入特定列等
    2024-09-09
  • Python Celery異步任務(wù)隊(duì)列使用方法解析

    Python Celery異步任務(wù)隊(duì)列使用方法解析

    這篇文章主要介紹了Python Celery異步任務(wù)隊(duì)列使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python實(shí)現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換

    Python實(shí)現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換

    Word文檔(.doc或.docx)和純文本文件(.txt)是兩種常用的文件格式,本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • Python實(shí)現(xiàn)比較撲克牌大小程序代碼示例

    Python實(shí)現(xiàn)比較撲克牌大小程序代碼示例

    這篇文章主要介紹了Python實(shí)現(xiàn)比較撲克牌大小程序代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • python之ImportError:模塊引入異常問(wèn)題

    python之ImportError:模塊引入異常問(wèn)題

    這篇文章主要介紹了python之ImportError:模塊引入異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論

那坡县| 平江县| 简阳市| 桃园市| 原阳县| 托克逊县| 襄汾县| 遂川县| 增城市| 自治县| 紫金县| 凌云县| 徐州市| 朝阳县| 孟村| 米林县| 隆子县| 宜都市| 泰州市| 静海县| 蓬安县| 巴彦淖尔市| 惠安县| 镇沅| 夹江县| 绥棱县| 宁河县| 诸城市| 塔城市| 霍邱县| 中山市| 清丰县| 英山县| 富裕县| 东平县| 绥德县| 安顺市| 平阴县| 开阳县| 静安区| 普宁市|