筆記自動化與爬蟲工具系列之 PyAutoGUI Library,如何利用自動化與爬蟲技術提高工作效率。
說明
pip install pyautogui
座標管理
因為在設計 PyAutoGUI 的過程中會使用到大量的座標點,建議使用以下方式管理與存取。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
coords = {
'start': Point(115, 350),
'button': Point(900, 350),
'end': Point(1702, 337)
}
pyautogui.moveTo(*coords['start'])
游標操作
pyautogui.size()
# 取得螢幕解析度
# Size(width=2560, height=1440)
pyautogui.moveTo(x, y)
# 游標移動到特定座標
pyautogui.moveTo(x, y, duration = 2, tween=pyautogui.easeInOutQuad)
# 加入游標移動的過程
pyautogui.move(x_offset, y_offset)
# 將游標向 x 軸與 y軸相對進行移動量
pyautogui.click()
# 游標點擊
pyautogui.click(x, y)
# 游標點擊特定座標
pyautogui.dragTo(x, y, duration=1)
# 從目標的游標拖曳到特定座標
pyautogui.drag(x_offset, y_offset, duration=1)
# 從目標的游標拖曳相對 x 與 y 的移動量
pyautogui.displayMousePosition()
# 動態取得目前游標所在的座標以及 Pixel RGB
pyautogui.scroll(500)
pyautogui.scroll(-500)
# 滑鼠滾輪操作
輸入內容
pyautogui.typewrite("text")
# 輸入指定的內容
pyautogui.hotkey("ctrl", "v")
# 貼上記憶體中的內容
pyautogui.write('Hello World!', interval=0.25)
# 輸入內容並控制輸入間隔
pyautogui.keyDown('shift')
pyautogui.press('2')
pyautogui.keyUp('shift')
# 持續按壓 Shift,模擬輸入 @ 的過程
偵測畫面
pyautogui.screenshot("screenshot.png")
# 截圖並儲存
pyautogui.locateOnScreen("image.png")
# 尋找特定圖片是否存在於螢幕畫面中,並回傳座標
window = pyautogui.getWindowsWithTitle('Notepad')[0]
window.maximize()
Failsafe
pyautogui.FAILSAFE = True
為了在自動化過程有狀況,啟用 FAILSAFE
可以讓使用者將游標移動到 (0, 0) 或者是輸入 Ctrl + Alt + Delete 時,停止自動化。
搭配的 Library
經常與 PyAutoGUI 搭配的 Library:
import pyperclip
pyperclip.copy('text keep in clip')
# 將資料儲存在 clip
pyautogui.typewrite(pyperclip.paste())
# 從 clip 輸入到介面
pyautogui.hotkey("ctrl", "v")
# 從 clip 貼上到介面
import time
threshold = 600
start_time = time.time()
end_time = time.time()
if end_time - start_time > threshold:
print(f'已經執行超過 {threshold} 秒')