過去公司一直在安排各種學習任務,**章節很多**,有的是技術性的,有的是政策性的,如果你沒有按時完成學習任務,會通知你。 但是,這些學習內容並不一定有幫助,所以大家都養成了刷課堂的習慣,就是點**,讓它掛在那裡。 但是有乙個問題,**過程會檢測使用者是否操作過,如果檢測時間長時間不操作會彈出框提示,只有點選彈窗框上的繼續按鈕才能繼續**,這導致我們在刷類時經常注意頁面是否暫停,刷班效率有點低。為此,製作了乙個桌面圖示檢測小工具,它檢測到桌面上出現特定圖示後,它模擬滑鼠點選以完成繼續的功能。
這就是乙個人的用武之地python
圖書館——pyautogui
。這個庫是這樣用的,並且用這個庫做乙個刷讚的助手,但建議不要用它來真正刷讚。
首先,需要安裝pyautogui
是乙個 Python 庫,用於以程式設計方式控制滑鼠和鍵盤操作,可用於自動執行測試、任務和其他要求。 這是其中之一pyautogui
基本教程。
pyautogui
pip install pyautogui
pyautogui
您可以控制滑鼠移動到螢幕上的特定位置。 這可以通過moveto
函式實現,需要 x 和 y 坐標作為引數。
import pyautogui
將滑鼠移動到螢幕的 (100, 100) 位置。
pyautogui.moveto(100, 100, duration=1)
duration
該引數是可選的,表示移動到指定位置所需的時間(以秒為單位)。
用click
函式可以模擬滑鼠單擊或指定單擊位置。
在當前位置單擊滑鼠左鍵。
pyautogui.click()
右鍵單擊螢幕 (200, 200)。
pyautogui.click(200, 200, button='right')
scroll
函式可以滾動滑鼠。 正數表示向上滾動,負數表示向下滾動。 本機不直接對應螢幕上的畫素數,而是取決於作業系統和應用程式的滾動設定。 例如,在某些文字編輯器或 Web 瀏覽器中,一行可以定義為一行文字的高度,而在其他上下文中,它可能取決於系統的滾動速度設定。
向上滾動。
pyautogui.scroll(200)
向下滾動。
pyautogui.scroll(-200)
pyautogui
它還可以模擬鍵盤操作,例如擊鍵、文字輸入等。
按下並鬆開空格鍵。
pyautogui.press('space')
輸入字串。
pyautogui.write('hello, pyautogui!', interval=0.25)
interval
該引數表示每個字元之間的延遲時間(以秒為單位)。
pyautogui
可以捕獲螢幕截圖,這對於自動化測試和監控很有用。
捕獲全屏螢幕截圖。
screenshot = pyautogui.screenshot()
screenshot.s**e('screenshot.png')
pyautogui
影象的位置可以在螢幕上找到。 如果找到,則返回四倍(left, top, width, height)
,表示在螢幕上找到的影象的位置和大小。 如果未找到匹配的影象,則函式將返回none
。它可以通過confidence
引數可提高搜尋的容錯能力。 confidence
引數用於指定匹配的準確性,範圍從 0 到 1。 注意,使用confidence
需要安裝的引數opencv-python
圖書館——
location = pyautogui.locateonscreen('button.png', confidence=0.9)
用pyautogui
,尤其是在自動控制滑鼠和鍵盤時,請確保有足夠的安全措施,例如設定延遲或使用pyautogui.failsafe = true
啟用故障安全功能。 啟用故障安全功能後,將滑鼠移動到螢幕左上角將丟擲pyautogui.failsafeexception
以中斷指令碼。 在執行自動化指令碼之前,請確保了解將採取哪些措施來防止滑鼠和鍵盤上的意外操作或其他問題。 該工具的核心是使用 python 庫pyautogui
pynput
跟opencv-python
實現互動自動化。 工作流程如下:
開啟知乎關注頁面首先,手動開啟知乎關注頁面,準備開始自動化操作。 螢幕檢測到審批圖示:該工具將不斷掃瞄螢幕以查詢特定的背書圖示。 模擬使用者閱讀:找到審批圖示後,該工具模擬點選圖示上方的行開啟全文,然後模擬滑鼠上下滾動模擬閱讀過程。 自動點讚:閱讀後,工具模擬點選同意圖示完成點讚操作。 退出閱讀並繼續測試:識別出摺疊的圖示後,退出閱讀狀態,模擬滑鼠滑動檢測下乙個批准圖示。 通過這一系列操作,該工具可以自動點讚知乎上的文章,模擬使用者的正常瀏覽行為。
“批准”圖示
“摺疊”圖示
喜歡的圖示。
專案 ** 託管在github
,可以通過以下鏈結***和圖示訪問:github-
import random
import time
import pyautogui
from pynput import keyboard
import threading
偵聽 ESC 金鑰識別符號(聽到 ESC 金鑰時停止執行)。
listener_esc = false
影象示例的路徑。
agree_path = 'image/agree.png'
read_more_path = 'image/read_more.png'
close_path = 'image/close.png'
中斷的長度(以 s 為單位,最好更長)。
sleep_time = 1
置信度(建議提高,否則容易誤觸)。
confidence = 0.8
滑鼠滾動速度。
scroll_speed = 10
def on_press(key):
按下該鍵時的動作。
try:if key == keyboard.key.esc:
當檢測到 ESC 鍵時,將輸出訊息並停止監聽。
print('按下 esc 鍵停止偵聽。 ')
ESC 已被按下。
global listener_esc
listener_esc = true
返回 false 停止 ***
return false
except attributeerror:
passdef get_a_number(a, b):
生成乙個隨機數 [a, b]。
return:
return random.random().randint(a, b)
def on_release(key):
釋放金鑰時的操作。
passdef start_listener():
監聽 ESC 鍵。
return:
with keyboard.listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
def reading():
模擬閱讀。 1.隨機滾動滑鼠。
2. 隨機滾動畫素行數。
return:
隨機上下滾動滑鼠 ()。
scroll_times = get_a_number(1, 3)
while scroll_times > 0 and not listener_esc:
隨機滾動畫素行數。
lines = get_a_number(50, 100)
向下滑動。
for _ in range(int(lines / scroll_speed)):
pyautogui.scroll(-scroll_speed)
time.sleep(sleep_time)
向上滑動,就可以回到剛才的位置。
for _ in range(int(lines / scroll_speed)):
pyautogui.scroll(scroll_speed)
time.sleep(sleep_time)
scroll_times -= 1
def close():
模擬關閉讀數,迴圈是為了防止坐標不準確而不關閉。
return:
try:close_location = pyautogui.locateonscreen(close_path, confidence=confidence)
while close_location:
計算影象中心點。
center = pyautogui.center(close_location)
pyautogui.click(center)
print(f"close-clicked on ")
time.sleep(sleep_time)
close_location = pyautogui.locateonscreen(close_path, confidence=confidence)
except pyautogui.failsafeexception:
print("close not found")
return
def do_read(x, y):
模擬單擊“閱讀更多”。
param x:
param y:同意,點選上方約50畫素檢視全文。
return:
在螢幕上查詢影象以閱讀全文。
if not listener_esc:
點選這裡檢視全文。
pyautogui.click(x, y)
print(f"read more-clicked on , ")
載入內容。
time.sleep(sleep_time)
讀。 reading()
def do_click():
模擬喜歡。 :return:
檢查是否按下了 esc 鍵,如果是,請退出迴圈。
while not listener_esc:
給自己一些時間準備切換到目標應用視窗。
time.sleep(sleep_time)
try:在螢幕上找到喜歡的圖片,可以調整置信度引數,以適應圖片匹配的精度要求。
agree_location = pyautogui.locateonscreen(agree_path, confidence=confidence)
if agree_location:
計算影象中心點。
center = pyautogui.center(agree_location)
x, y = center
模擬閱讀。
do_read(x, y - 50)
豎起大拇指。 if not listener_esc:
# pyautogui.Click(x, y) 可防止因坐標移動而導致的偏差,並重新獲取批准坐標。
agree_location = pyautogui.locateonscreen(agree_path, confidence=confidence)
center = pyautogui.center(agree_location)
pyautogui.click(center)
print(f"agree - clicked on ")
單擊“關閉”按鈕。
close()
except pyautogui.imagenotfoundexception:
print("agree not found. trying again...")
稍作停頓,以免迴圈執行得太頻繁。
time.sleep(sleep_time)
向下滾動,向下滾動約 200 畫素。
for _ in range(int(200 / scroll_speed)):
pyautogui.scroll(-scroll_speed)
print("exited.")
建立並啟動偵聽 esc 金鑰的執行緒。
listener_thread1 = threading.thread(target=start_listener)
listener_thread1.start()
這裡的**可以執行而不會被阻塞。
print("like mode begin...")
do_click()
print("like mode end...")
為了執行此工具,需要安裝以下 python 庫:
pip install pyautogui pynput opencv-python
pyautogui
:用於模擬滑鼠點選和滾動。 pynput
:用於模擬鍵盤輸入和捕獲退出訊號。 opencv-python
:用於影象識別,檢測螢幕上的特定圖示。 坐標精度:確保使用的畫素坐標是左上角,而不是中心坐標,以提高識別精度。 圖示清晰度:點讚和關閉按鈕的螢幕截圖應清晰,並且網頁的縮放級別應與程式執行時相同。 防檢測措施:為避免被平台檢測到,建議設定較長的隨機休息時間。 合理使用:此物品僅供學習和研究使用,不得用於任何違規行為。 **演示中的休息間隔縮短並加倍。2月** 動態激勵計畫