본문 바로가기
[Python]/업무자동화

[중요2][Python] 파이썬 PyAutoGui 라이브러리 : 마우스 키보드 제어!!

by METAVERSE STORY 2024. 10. 24.
반응형

 

 

 

`pyautogui` 라이브러리로 마우스와 키보드를 수동으로 제어하여 웹사이트에 접속하고 필요한 정보를 캡처해 저장하는 방법을 알아보도록 하겠습니다.

 

라이브러리 설치


1. 마우스와 키보드를 제어할 수 있는 `pyautogui`

pip install pyautogui

2. 클립보드를 사용하기 위한 `pyperclip` - 아나콘다 설치시 기본으로 설치되어 있습니다.

pip install pyperclip

 

pyautogui 라이브러리는 한글입력을 직접 지원하지 않으므로, 클립보드에 원하는 한글 텍스트를 저장한 뒤, 꺼내서 사용하기 위해 필요합니다.

 

2. 마우스 좌표 출력하기


현재 마우스 포인터의 위치를 x,y 좌표로 출력하는 프로그램입니다.

import pyautogui	# pyautogui 라이브러리
import time			# 시간지연을 위한 time 라이브러리

while True:
	print(pyautogui.position())		# 현재 마우스 포인터의 좌표 표시
    time.sleep(0.1)					# 0.1초 지연

 

결과는 0.1초마다 현재 마우스와 포인터의 위치를 표시합니다.

 

모니터에서의 좌표는 아래 그림과 같이 최상단을 기준으로 가로축이 x, 세로축이 y 입니다.

 

3. pyautogui 기능 살펴보기


pyautogui 라이브러리의 기능들에는 어떤것이 있는지 알아보겠습니다. 원하는 기능들을 찾으셨다면 한번 적용해 보세요.

 

마우스 관련 함수들

함수 기능
position() 마우스 포인터의 현재 좌표를 (x,y)의 튜플 형태로 가져옵니다.
size() 현재 메인 모니터의 크기를 (width, height) 튜플 형태로 가져옵니다.
moveTo(x, y) 마우스 포인터가 원하는 좌표 (x,y)로 이동합니다. 절대좌표 입니다.
moveTo(x, y, time) 마우스 포인터가 원하는 좌표 (x,y)로 지정된 시간동안 이동합니다. 절대좌표 입니다.
moveRel(dx, dy) 현재 위치에서 (dx, dy) 픽셀만큼 이동합니다. 상대좌표 입니다.
click() 현재 위치에서 마우스를 좌클릭 합니다.
> click(200, 400) (200, 400) 위치에서 마우스를 좌클릭합니다.
> click(300, 400, button='right') (300, 400) 위치에서 마우스를 우클릭합니다. (button = 'left', 'middle', 'right')
> click(x, y, clicks = 2, interval = 0.5) (x,y) 위치에서 마우스를 0.5초 간격으로 2번 클릭합니다. (횟수와 인터벌 설정)
rightClick() 현재 위치에서 마우스를 우클릭 합니다. (click()에 인자 추가로 수행 가능)
doubleClick() 현재 위치에서 마우스를 더블클릭 합니다. (click()에 인자 추가로 수행 가능)
dragTo(400, 300) (400, 300)의 위치까지 좌클릭을 유지하며 드래그합니다. 절대좌표 입니다.
dragTo(100, 200, duration = 2) (100, 200)의 위치까지 2초동안 드래그합니다. default로 button은 left 입니다.
dragRel(200, 100, button = 'right') 현재 위치에서 (200, 100)만큼 우클릭을 유지하며 드래그합니다. 상대좌표 입니다.

 

키도브 관련 함수들

함수 기능
write("Hello") Hello를 입력합니다. 한글을 지원되지 않습니다.(클립보드 활용)
write("Hello", interval = 0.1) Hello를 입력할 때 0.1초 간격으로 한 문자씩 입력합니다.
hotkey("Ctrl", "v") 두개의 키를 동시에 누릅니다. [Ctrl + v]을 입력합니다
screenshot('path', region = (x,y,w,h) 원하는 화면을 캡처하여 지정된 경로에 저장합니다.
영역 설정 : region = (시작 x좌표, 시작 y좌표, 가로 사이즈, 세로 사이즈)
press(keys) shift, ctrl, enter 등 특수키를 입력할 때 사용합니다.
> press('up', presses=3, interval = 2) 위쪽 방향키를 2초 간격으로 3번 입력합니다.

 

 

4. 구글창에 검색어 입력하기


키보드, 마우스 자동 제어 기능을 활용해서 구글 검색을 시도해 보겠습니다.

 

1.  구글을 모니터 한 켠에 열어두고, 

2.  검색창 위치를 확인합니다. > `position()`

3.  검색창 위치로 이동하여 > `moveTo()`

4.  클릭한 뒤 > `click()`

5.  검색어를 입력하고 > `write()`

6.  엔터를 입력합니다. > `press()`

 

  • 구글을 모니터 한 켠에 열어 놓습니다.

  • 먼저, 검색창의 위치를 확인합니다.
import pyautogui
import time

while True:
	print(pyautogui.position())
    time.sleep(0.1)

  • 검색어를 자동으로 입력해 봅니다.
import pyautogui
import time

# 1. 검색창으로 이동
pyautogui.moveTo(1225, 479, duration=1)
# 2. 검색창에 타이핑하기 위해 클릭
pyautogui.click()
# 3. 검색어 입력
pyautogui.write('python logo', interval=0.1)
# 4. 엔터 입력
pyautogui.press('enter')

 

마우스가 검색창으로 천천히 이동한 뒤, 클릭되고 'python logo' 라는 글자가 한글자씩 입력되는 것을 볼 수 있습니다. 마지막으로 엔터를 입력해 검색 결과도 나오는것을 확인했습니다.

 

5. 한글 검색어 입력하기


마지막으로 한글을 입력하는 방법을 알아보겠습니다.

pyautogui 라이브러리는 한글을 지원하지 않으므로, 약간의 편법을 사용합니다. 입력하고자 하는 한글 텍스트를 클립보드에 저장한 뒤 'ctrl+v' 를 원하는 위치에 입력함으로써 클립보드에 있는 한글이 붙여지도록 하는 방법입니다.

이때 클립보드를 사용하기 위한 라이브러리가 pyperclip입니다.

import pyautogui
import pyperclip
import time

# 1. 검색창으로 이동
pyautigui.moveTo(1225, 479, duration=1)
# 2. 검색창에 타이핑하기 위해 클릭
pyautogui.click()
time.sleep(0.5)

# 3. 한글 검색어 준비
pyperclip.copy("파이썬 로고")
# 4. 클립보드 내용 붙여넣기
pyautogui.hotkey('Ctrl', 'v')
time.sleep(0.5)

# 5. 엔터 입력
pyautogui.press('enter')

 

 

 

출처 : https://jolocal.tistory.com/m/71

반응형

댓글