Python利用標簽實現(xiàn)清理微信好友的自動化腳本
微信已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡纳缃还ぞ摺kS著使用時間的增長,我們的微信好友列表可能會變得越來越臃腫。
在上一篇文章中,我寫了一個自動根據(jù)用戶狀態(tài)(好友將我們刪除了還是拉黑了)將用戶打上不同標簽的工具。那么,已經(jīng)將用戶打好了標簽之后,我們就可以根據(jù)指定的標簽名來直接刪除好友了。
在本文中,我將逐步分析這個用 Python 編寫的自動化腳本,它可以通過標簽批量清理微信好友。該腳本使用了 uiautomator2 庫,這是一個強大的Android UI 自動化工具,廣泛用于 Android 設(shè)備的自動化操作。本腳本就是通過模擬用戶的點擊、滑動等操作,實現(xiàn)自動化清理指定標簽下的微信好友。
環(huán)境準備
- 安裝 Python 3.x
- 安裝 uiautomator2 庫:
pip install uiautomator2 - 準備一臺 Android 設(shè)備,并開啟開發(fā)者模式
- 確保設(shè)備與電腦在同一網(wǎng)絡(luò)環(huán)境下
使用步驟
- 首先給要清理的好友打上統(tǒng)一的標簽(這點也可以直接運行上文我分享的腳本,可以自動化打標簽)
- 然后在腳本中設(shè)定腳本名稱,執(zhí)行腳本。
以下是對代碼的逐行分析,希望幫助大家更好地理解腳本的實現(xiàn)過程。
代碼分析
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 通過標簽清理微信好友 """ import time import uiautomator2 as u2
說明:
#!/usr/bin/env python3是腳本的設(shè)定,告訴操作系統(tǒng)用 Python3 來執(zhí)行該腳本。# -*- coding: utf-8 -*-用于指定文件的編碼格式為UTF-8,避免中文字符出現(xiàn)亂碼。- 導入了
time模塊,用于實現(xiàn)延時操作。 uiautomator2是一個用于控制 Android 設(shè)備 UI 的 Python 庫,本文腳本依賴它來執(zhí)行自動化任務(wù)。
類定義
class WXClearFriendByTag:
"""
通過標簽清理微信好友
"""
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 # 需要被清理好友的標簽名
self.max_times_tag = max_times_tag # 查找指定標簽的最大循環(huán)次數(shù)
self.max_times_friend = max_times_friend # 清理好友的最大循環(huán)次數(shù)
說明:
WXClearFriendByTag類的作用是通過標簽清理微信中的好友。初始化時,我們傳入標簽名(tag_name),以及查找標簽和清理好友的最大次數(shù)。self.d = u2.connect()用于連接設(shè)備,u2.connect()會自動選擇連接到的設(shè)備。如果有多個設(shè)備,默認連接第一個設(shè)備。max_times_tag和max_times_friend分別指定了查找標簽和清理好友的最大次數(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è)置查找元素等待時間,單位秒
說明:
enable_debug方法用于啟用調(diào)試模式,打印設(shè)備信息(如設(shè)備IP、設(shè)備號)以及設(shè)置UI元素查找的默認超時時間。self.d.implicitly_wait(30)設(shè)置了 UI 元素查找的最大超時時間為 30 秒,意味著在操作前,系統(tǒng)會等待最多 30 秒來查找元素。
進入標簽頁面
def go_to_tag_page(self):
"""
進入標簽頁面
:return:
"""
print("打開【通訊錄】")
self.d(text='通訊錄', className='android.widget.TextView').click_exists(timeout=3)
print("打開【標簽】")
self.d(text='標簽', className='android.widget.TextView').click_exists(timeout=3)
說明:
go_to_tag_page 方法模擬點擊進入微信的“通訊錄”頁面,再點擊進入“標簽”頁面。click_exists(timeout=3) 用來判斷元素是否存在,如果存在則點擊。
查找標簽并點擊
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"沒有找到標簽:{self.clear_tag_name}")
exit()
tag = self.d(text=self.clear_tag_name)
if tag.exists() is False:
print(f"沒有找到標簽:{self.clear_tag_name}")
exit()
print(f"找了{i}次,找到了標簽:{self.clear_tag_name} 點擊")
tag.click_exists(timeout=5)
說明:
find_tag_click方法的核心是查找指定標簽并點擊。首先通過find_tag_by_name()查找標簽,若沒有找到,就會通過滑動屏幕繼續(xù)查找,最多重復max_times_tag次。- 滑動操作
self.d.swipe(100, 1000, 100, 200)會從屏幕下方滑動至上方,模擬手動滑動以加載更多標簽。 - 如果找到了目標標簽,會點擊該標簽進入標簽頁面。
通過標簽名查找標簽
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"標簽是:{tag_name},好友數(shù):{friend_count}")
if tag_name == self.clear_tag_name:
run_status = 'done'
break
return run_status
說明:
find_tag_by_name方法通過標簽的resourceId查找所有標簽,獲取每個標簽的名稱和好友數(shù)。- 如果找到指定的標簽名,會返回
'done',否則返回'doing',供find_tag_click方法判斷是否繼續(xù)查找。
清理每個好友
def clear_every_friend(self):
"""
清理每個好友
: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'進入好友詳情頁面 --> {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方法負責清理每個好友。首先,通過resourceId='com.tencent.mm:id/kbq'獲取所有好友元素。- 點擊每個好友,進入好友詳情頁面后,點擊右上角的菜單,選擇刪除該好友。
- 刪除操作是通過點擊【刪除】按鈕實現(xiàn)的,并最終點擊確認框中的【刪除】。
清理標簽中的所有好友
def clear_friends_in_tag(self):
"""
在標簽中清理好友
:return:
"""
i = 1
while i <= self.max_times_friend:
print(f"第{i}次清理好友")
self.clear_every_friend()
i += 1
print(f"清理了{i}次好友")
說明:
clear_friends_in_tag 方法用于在標簽中清理所有好友。它會循環(huán)調(diào)用 clear_every_friend 方法,直到達到 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類的實例,傳入標簽名“清粉-賬號問題”,并依次調(diào)用enable_debug、find_tag_click和clear_friends_in_tag方法,完成清理操作。
總結(jié)
這段代碼展示了如何使用 uiautomator2 庫進行微信好友管理自動化。通過標簽篩選好友并刪除,非常適合需要批量清理好友的場景。
對于初學者來說,理解此腳本能幫助你掌握如何使用 uiautomator2 控制 Android 設(shè)備,執(zhí)行 UI 操作。
到此這篇關(guān)于Python利用標簽實現(xiàn)清理微信好友的自動化腳本的文章就介紹到這了,更多相關(guān)Python清理微信好友內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Beets模塊實現(xiàn)自動整理音樂庫
Beets是一個功能強大的Python庫,用于處理音樂文件的元數(shù)據(jù),在本文中,我們將探討beets模塊的常見使用方法,感興趣的可以跟隨小編一起學習一下2024-03-03
python opencv 實現(xiàn)讀取、顯示、寫入圖像的方法
這篇文章主要介紹了python opencv 實現(xiàn)讀取、顯示、寫入圖像的方法,本文通示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Python實現(xiàn)將HTML轉(zhuǎn)成PDF的方法分析
這篇文章主要介紹了Python實現(xiàn)將HTML轉(zhuǎn)成PDF的方法,結(jié)合實例形式分析了Python基于pdfkit模塊實現(xiàn)HTML轉(zhuǎn)換成PDF文件的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-05-05
python cv2.resize函數(shù)high和width注意事項說明
這篇文章主要介紹了python cv2.resize函數(shù)high和width注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
在PyCharm中打包Python項目并將其運行到服務(wù)器上的方法(推薦)
在PyCharm中打包Python項目并運行到服務(wù)器上,主要步驟包括:創(chuàng)建并設(shè)置項目、編寫項目代碼、打包項目、配置服務(wù)器環(huán)境、上傳可執(zhí)行文件到服務(wù)器以及運行項目,通過這些步驟,可以將Python項目打包并部署到服務(wù)器上2024-11-11

