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

Python利用標(biāo)簽實(shí)現(xiàn)清理微信好友的自動(dòng)化腳本

 更新時(shí)間:2024年12月02日 10:14:42   作者:左詩右碼  
微信已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡纳缃还ぞ?隨著使用時(shí)間的增長,我們的微信好友列表可能會(huì)變得越來越臃腫,所以本文為大家準(zhǔn)備了通過標(biāo)簽清理微信好友的Python自動(dòng)化腳本,希望對大家有所幫助

微信已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡纳缃还ぞ?。隨著使用時(shí)間的增長,我們的微信好友列表可能會(huì)變得越來越臃腫。

上一篇文章中,我寫了一個(gè)自動(dòng)根據(jù)用戶狀態(tài)(好友將我們刪除了還是拉黑了)將用戶打上不同標(biāo)簽的工具。那么,已經(jīng)將用戶打好了標(biāo)簽之后,我們就可以根據(jù)指定的標(biāo)簽名來直接刪除好友了。

在本文中,我將逐步分析這個(gè)用 Python 編寫的自動(dòng)化腳本,它可以通過標(biāo)簽批量清理微信好友。該腳本使用了 uiautomator2 庫,這是一個(gè)強(qiáng)大的Android UI 自動(dòng)化工具,廣泛用于 Android 設(shè)備的自動(dòng)化操作。本腳本就是通過模擬用戶的點(diǎn)擊、滑動(dòng)等操作,實(shí)現(xiàn)自動(dòng)化清理指定標(biāo)簽下的微信好友。

環(huán)境準(zhǔn)備

  • 安裝 Python 3.x
  • 安裝 uiautomator2 庫:pip install uiautomator2
  • 準(zhǔn)備一臺(tái) Android 設(shè)備,并開啟開發(fā)者模式
  • 確保設(shè)備與電腦在同一網(wǎng)絡(luò)環(huán)境下

使用步驟

  • 首先給要清理的好友打上統(tǒng)一的標(biāo)簽(這點(diǎn)也可以直接運(yùn)行上文我分享的腳本,可以自動(dòng)化打標(biāo)簽)
  • 然后在腳本中設(shè)定腳本名稱,執(zhí)行腳本。

以下是對代碼的逐行分析,希望幫助大家更好地理解腳本的實(shí)現(xiàn)過程。

代碼分析

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
通過標(biāo)簽清理微信好友
"""
import time
import uiautomator2 as u2

說明:

  • #!/usr/bin/env python3 是腳本的設(shè)定,告訴操作系統(tǒng)用 Python3 來執(zhí)行該腳本。
  • # -*- coding: utf-8 -*- 用于指定文件的編碼格式為UTF-8,避免中文字符出現(xiàn)亂碼。
  • 導(dǎo)入了 time 模塊,用于實(shí)現(xiàn)延時(shí)操作。
  • uiautomator2 是一個(gè)用于控制 Android 設(shè)備 UI 的 Python 庫,本文腳本依賴它來執(zhí)行自動(dòng)化任務(wù)。

類定義

class WXClearFriendByTag:
    """
    通過標(biāo)簽清理微信好友
    """
    def __init__(self, tag_name: str, max_times_tag: int = 5, max_times_friend: int = 5):
        self.d = u2.connect()  # 連接設(shè)備
        self.clear_tag_name = tag_name  # 需要被清理好友的標(biāo)簽名
        self.max_times_tag = max_times_tag  # 查找指定標(biāo)簽的最大循環(huán)次數(shù)
        self.max_times_friend = max_times_friend  # 清理好友的最大循環(huán)次數(shù)

說明:

  • WXClearFriendByTag 類的作用是通過標(biāo)簽清理微信中的好友。初始化時(shí),我們傳入標(biāo)簽名(tag_name),以及查找標(biāo)簽和清理好友的最大次數(shù)。
  • self.d = u2.connect() 用于連接設(shè)備,u2.connect()會(huì)自動(dòng)選擇連接到的設(shè)備。如果有多個(gè)設(shè)備,默認(rèn)連接第一個(gè)設(shè)備。
  • max_times_tagmax_times_friend 分別指定了查找標(biāo)簽和清理好友的最大次數(shù)。

啟用調(diào)試模式

def enable_debug(self):
    """
    開啟調(diào)試模式
    :return:
    """
    print(f"設(shè)備信息 ==> {self.d.info}")
    print(f"設(shè)備IP ==> {self.d.wlan_ip} 設(shè)備號 ==> {self.d.serial}")
    self.d.implicitly_wait(30)  # 設(shè)置查找元素等待時(shí)間,單位秒

說明:

  • enable_debug 方法用于啟用調(diào)試模式,打印設(shè)備信息(如設(shè)備IP、設(shè)備號)以及設(shè)置UI元素查找的默認(rèn)超時(shí)時(shí)間。
  • self.d.implicitly_wait(30) 設(shè)置了 UI 元素查找的最大超時(shí)時(shí)間為 30 秒,意味著在操作前,系統(tǒng)會(huì)等待最多 30 秒來查找元素。

進(jìn)入標(biāo)簽頁面

def go_to_tag_page(self):
    """
    進(jìn)入標(biāo)簽頁面
    :return:
    """
    print("打開【通訊錄】")
    self.d(text='通訊錄', className='android.widget.TextView').click_exists(timeout=3)
    print("打開【標(biāo)簽】")
    self.d(text='標(biāo)簽', className='android.widget.TextView').click_exists(timeout=3)

說明:

go_to_tag_page 方法模擬點(diǎn)擊進(jìn)入微信的“通訊錄”頁面,再點(diǎn)擊進(jìn)入“標(biāo)簽”頁面。click_exists(timeout=3) 用來判斷元素是否存在,如果存在則點(diǎn)擊。

查找標(biāo)簽并點(diǎn)擊

def find_tag_click(self):
    i = 1
    while i <= self.max_times_tag:
        print(f"第{i}次查詢")
        status = self.find_tag_by_name()
        if status == 'done':
            break
        else:
            self.d.swipe(100, 1000, 100, 200)
            i += 1
    if i > self.max_times_tag:
        print(f"沒有找到標(biāo)簽:{self.clear_tag_name}")
        exit()

    tag = self.d(text=self.clear_tag_name)
    if tag.exists() is False:
        print(f"沒有找到標(biāo)簽:{self.clear_tag_name}")
        exit()

    print(f"找了{(lán)i}次,找到了標(biāo)簽:{self.clear_tag_name} 點(diǎn)擊")
    tag.click_exists(timeout=5)

說明:

  • find_tag_click 方法的核心是查找指定標(biāo)簽并點(diǎn)擊。首先通過 find_tag_by_name() 查找標(biāo)簽,若沒有找到,就會(huì)通過滑動(dòng)屏幕繼續(xù)查找,最多重復(fù) max_times_tag 次。
  • 滑動(dòng)操作 self.d.swipe(100, 1000, 100, 200) 會(huì)從屏幕下方滑動(dòng)至上方,模擬手動(dòng)滑動(dòng)以加載更多標(biāo)簽。
  • 如果找到了目標(biāo)標(biāo)簽,會(huì)點(diǎn)擊該標(biāo)簽進(jìn)入標(biāo)簽頁面。

通過標(biāo)簽名查找標(biāo)簽

def find_tag_by_name(self):
    run_status = 'doing'
    elems = self.d(resourceId="com.tencent.mm:id/hs8")
    for elem in elems:
        tag_name = elem.get_text(timeout=10)
        friend_count = elem.sibling(resourceId="com.tencent.mm:id/hs7").get_text(timeout=10)
        print(f"標(biāo)簽是:{tag_name},好友數(shù):{friend_count}")
        if tag_name == self.clear_tag_name:
            run_status = 'done'
            break
    return run_status

說明:

  • find_tag_by_name 方法通過標(biāo)簽的resourceId查找所有標(biāo)簽,獲取每個(gè)標(biāo)簽的名稱和好友數(shù)。
  • 如果找到指定的標(biāo)簽名,會(huì)返回 'done',否則返回 'doing',供 find_tag_click 方法判斷是否繼續(xù)查找。

清理每個(gè)好友

def clear_every_friend(self):
    """
    清理每個(gè)好友
    :return:
    """
    time.sleep(3)
    elems = self.d(resourceId='com.tencent.mm:id/kbq')
    if elems.exists() is False:
        print("沒有找到好友")
        exit()

    for elem in elems:
        time.sleep(1)
        friend_nickname = elem.get_text(timeout=10)
        print(f'進(jìn)入好友詳情頁面 --> {friend_nickname}')

        elem.click(timeout=5)

        self.d(resourceId='com.tencent.mm:id/coy').click(timeout=5)
        time.sleep(1)
        self.d(text='刪除').click(timeout=5)
        time.sleep(3)
        self.d(text='刪除', resourceId='com.tencent.mm:id/mm_alert_ok_btn').click(timeout=5)
        time.sleep(1)

說明:

  • clear_every_friend 方法負(fù)責(zé)清理每個(gè)好友。首先,通過resourceId='com.tencent.mm:id/kbq' 獲取所有好友元素。
  • 點(diǎn)擊每個(gè)好友,進(jìn)入好友詳情頁面后,點(diǎn)擊右上角的菜單,選擇刪除該好友。
  • 刪除操作是通過點(diǎn)擊【刪除】按鈕實(shí)現(xiàn)的,并最終點(diǎn)擊確認(rèn)框中的【刪除】。

清理標(biāo)簽中的所有好友

def clear_friends_in_tag(self):
    """
    在標(biāo)簽中清理好友
    :return:
    """
    i = 1
    while i <= self.max_times_friend:
        print(f"第{i}次清理好友")
        self.clear_every_friend()
        i += 1

    print(f"清理了{(lán)i}次好友")

說明:

clear_friends_in_tag 方法用于在標(biāo)簽中清理所有好友。它會(huì)循環(huán)調(diào)用 clear_every_friend 方法,直到達(dá)到 max_times_friend 次。

腳本入口

if __name__ == '__main__':
    tag_name = "清粉-賬號問題"
    wx = WXClearFriendByTag(tag_name)
    wx.enable_debug()
    wx.find_tag_click()
    wx.clear_friends_in_tag()

說明:

  • if __name__ == '__main__': 是Python腳本的入口,確保腳本從此處開始執(zhí)行。
  • 創(chuàng)建 WXClearFriendByTag 類的實(shí)例,傳入標(biāo)簽名“清粉-賬號問題”,并依次調(diào)用 enable_debug、find_tag_clickclear_friends_in_tag 方法,完成清理操作。

總結(jié)

這段代碼展示了如何使用 uiautomator2 庫進(jìn)行微信好友管理自動(dòng)化。通過標(biāo)簽篩選好友并刪除,非常適合需要批量清理好友的場景。

對于初學(xué)者來說,理解此腳本能幫助你掌握如何使用 uiautomator2 控制 Android 設(shè)備,執(zhí)行 UI 操作。

到此這篇關(guān)于Python利用標(biāo)簽實(shí)現(xiàn)清理微信好友的自動(dòng)化腳本的文章就介紹到這了,更多相關(guān)Python清理微信好友內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 采集中文亂碼問題的完美解決方法

    python 采集中文亂碼問題的完美解決方法

    下面小編就為大家?guī)硪黄猵ython 采集中文亂碼問題的完美解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Python使用Beets模塊實(shí)現(xiàn)自動(dòng)整理音樂庫

    Python使用Beets模塊實(shí)現(xiàn)自動(dòng)整理音樂庫

    Beets是一個(gè)功能強(qiáng)大的Python庫,用于處理音樂文件的元數(shù)據(jù),在本文中,我們將探討beets模塊的常見使用方法,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 使用Python編寫文件重復(fù)檢查器的完整代碼

    使用Python編寫文件重復(fù)檢查器的完整代碼

    在日常工作中,我們經(jīng)常需要處理大量文件,但有時(shí)候會(huì)遇到文件重復(fù)的情況,為了有效管理文件并避免重復(fù)占用存儲(chǔ)空間,我們可以編寫一個(gè)簡單的Python程序來檢查文件夾中是否存在重復(fù)文件,本文將介紹如何使用Python和其庫來編寫一個(gè)文件重復(fù)檢查器
    2024-08-08
  • python2 對excel表格操作完整示例

    python2 對excel表格操作完整示例

    這篇文章主要介紹了python2 對excel表格操作,結(jié)合完整實(shí)例形式分析了Python2 操作Excel表格的讀取、寫入相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • python opencv 實(shí)現(xiàn)讀取、顯示、寫入圖像的方法

    python opencv 實(shí)現(xiàn)讀取、顯示、寫入圖像的方法

    這篇文章主要介紹了python opencv 實(shí)現(xiàn)讀取、顯示、寫入圖像的方法,本文通示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法分析

    Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法分析

    這篇文章主要介紹了Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法,結(jié)合實(shí)例形式分析了Python基于pdfkit模塊實(shí)現(xiàn)HTML轉(zhuǎn)換成PDF文件的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • python cv2.resize函數(shù)high和width注意事項(xiàng)說明

    python cv2.resize函數(shù)high和width注意事項(xiàng)說明

    這篇文章主要介紹了python cv2.resize函數(shù)high和width注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 在PyCharm中打包Python項(xiàng)目并將其運(yùn)行到服務(wù)器上的方法(推薦)

    在PyCharm中打包Python項(xiàng)目并將其運(yùn)行到服務(wù)器上的方法(推薦)

    在PyCharm中打包Python項(xiàng)目并運(yùn)行到服務(wù)器上,主要步驟包括:創(chuàng)建并設(shè)置項(xiàng)目、編寫項(xiàng)目代碼、打包項(xiàng)目、配置服務(wù)器環(huán)境、上傳可執(zhí)行文件到服務(wù)器以及運(yùn)行項(xiàng)目,通過這些步驟,可以將Python項(xiàng)目打包并部署到服務(wù)器上
    2024-11-11
  • 詳解Python發(fā)送email的三種方式

    詳解Python發(fā)送email的三種方式

    這篇文章主要介紹了詳解Python發(fā)送email的三種方式,Python發(fā)送email的三種方式,分別為使用登錄郵件服務(wù)器、使用smtp服務(wù)、調(diào)用sendmail命令來發(fā)送三種方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • python實(shí)現(xiàn)繪制樹枝簡單示例

    python實(shí)現(xiàn)繪制樹枝簡單示例

    這篇文章主要介紹了python實(shí)現(xiàn)繪制樹枝簡單示例,有助于讀者加深對Python繪圖的認(rèn)識(shí),需要的朋友可以參考下
    2014-07-07

最新評論

武川县| 玉门市| 通渭县| 玉田县| 宜都市| 芮城县| 牟定县| 太白县| 龙州县| 贡山| 和龙市| 柘荣县| 北川| 闵行区| 嵩明县| 榆社县| 海丰县| 广元市| 东海县| 色达县| 叙永县| 忻州市| 三明市| 东乌珠穆沁旗| 三河市| 宜春市| 义马市| 开化县| 泸州市| 金湖县| 开封县| 碌曲县| 信阳市| 凯里市| 淳安县| 视频| 桓仁| 连江县| 即墨市| 漳平市| 崇州市|