用pyautogui給粉絲們點贊
2024-06-10 加入收藏
用pyautogui給粉絲們點贊【#172】
歡迎訪問「Python3分鐘」系列。「花3分鐘時間」,學習或溫習一個Python知識點。今天是第172。
?上期的「Python3分鐘」系列給大家介紹了
pyautogui
的基本使用。但是有細心的小伙伴發現了,我并沒有介紹
?pyautogui
模塊最核心的使用方法 -- 「圖片定位」
「如果你還不會pyautogui
模塊的基本使用,請進入下面的傳送門學習:」
解放雙手!Python自動化必知必會的小技能【#171】
屏幕圖片定位
上期我們只能通過坐標點去操作鼠標的位置,如果每次都用這種方式定位,是非常不方便的。
所以如果能識別出指定元素的坐標,那真的是極極好。。
使用pyautogui
模塊定位指定元素坐標也很簡單,先把圖片元素文件的路徑傳入pyautogui模塊的locateOnScreen
或locateAllOnScreen
函數即可。
?locateOnScreen函數只返回第一處識別的位置信息;
locateAllOnScreen函數則返回匹配到所有的識別的位置信息
這個匹配非模糊匹配,匹配對象和傳入對象要完全一樣才能正確匹配。
?
匹配桌面文件夾圖標
我桌面上有兩個文件夾;截取文件夾圖標;
結合代碼識別文件夾坐標位置信息;
識別單個文件夾圖標
import pyautogui
folder = pyautogui.locateOnScreen('icon.png')
print(folder)
運行結果:
Box(left=17, top=88, width=82, height=68)
識別多個文件夾圖標
import pyautogui
folders = pyautogui.locateAllOnScreen('icon.png')
print(list(folders))
運行結果:
[Box(left=17, top=88, width=82, height=68), Box(left=106, top=146, width=82, height=68)]
轉成x,y坐標
從返回的結果看出,返回的并不是一個點的坐標數據,而是一個塊狀的范圍數據。
所以我們需要把這個塊狀
數據轉為點
數據,以方便假鼠標
能更方便去點擊。
方法一
可以直接使用pyautogui.locateCenterOnScreen
方法獲得匹配中的圖標中心坐標;
import pyautogui
print(pyautogui.locateCenterOnScreen('icon.png'))
運行結果:
Point(x=58, y=122)
但這個方式只能取到一個坐標。
方法二
使用pyautogui.center
函數,獲得塊狀數據
的中心點坐標。
import pyautogui
folder = pyautogui.locateOnScreen('icon.png')
print(pyautogui.center(folder))
運行結果:
Point(x=58, y=122)
使用這個方法可以遍歷塊狀數據
批量獲得對應的中心點坐標數據。
綜合實例
用pyautogui
模塊做一個簡單B站評論點贊器:
需要識別的贊
圖標:
還有就是當識別到已經底部時,代碼退出運行,
我找到這一個標識:
點贊邏輯也很簡單,如果在界面上沒有識別到贊
的圖標則頁面往下滾動,
如果識別到了,則對其進行點擊,
如果識別到底部標識,則退出程序。
相關圖片標識:
示例代碼:
import pyautogui
pyautogui.FAILSAFE = True
end_flag = False
def click_like(box_data):
for i in box_data:
pyautogui.click(pyautogui.center(i))
print('點贊成功!')
while not end_flag:
end_flag = pyautogui.locateCenterOnScreen('end.png')
targets = pyautogui.locateAllOnScreen('icon.png')
if targets:
click_like(targets)
pyautogui.scroll(clicks=-800)
print('往下滾動!')
print("全部點完,退出程序!")
運行效果圖:
?圖標識別需要費點時間,所以需要耐心等待,并不是代碼問題。