오토마우스로 웹 페이지 자동화하기

변현섭·2023년 7월 31일
1

파이썬 프로그래밍

목록 보기
7/10
post-thumbnail

1. 마우스의 좌표를 출력하기

마우스와 키보드를 자동으로 제어하기 위한 pyautogui 라이브러리와, 클립보드에 한글을 사용하기 위한 pyperclip 라이브러리를 설치한다.

python -m pip install pyautogui
python -m pip install pyperclip

아래는 마우스의 좌표를 출력하는 코드이다.

위 코드는 1초마다 마우스의 x, y좌표를 출력한다. 아래는 실행결과이다.

2. pyautogui 라이브러리의 메서드

오토마우스 라이브러리는 자동화에 아주 유용하기 때문에, 관련 메서드에 대해 간략히 살펴보고 넘어가겠다.

① moveTo(x, y)

  • 절대 좌표 기준 (x, y)로 커서를 이동

② moveTo(x, y, 시간)

  • 절대 좌표 기준 (x, y)로 지정된 시간동안 커서를 이동

③ moveRel(x, y)

  • 현재 위치로부터 (x, y)만큼 커서를 이동

④ click()

  • 현재 위치에서 마우스 클릭
  • click(x, y) 또는 click(x=50, y=50)과 같이 해당 좌표로 이동 후 클릭으로 응용 가능

⑤ doubleClick()

  • 현재 위치에서 마우스 더블 클릭

⑥ rightClick()

  • 현재 위치에서 마우스 우클릭

⑦ dragTo(x=50, y=50, duration=2)

  • 현재 위치에서 (x, y)까지 2초 동안 드래그

⑧ typewrite("hello")

  • hello 입력
  • 한글은 지원되지 않기 때문에 pyperclip 라이브러리를 이용한 붙여넣기로 입력

⑨ typewrite("hello", interval=1)

  • 1초 동안 hello 입력

⑩ hotkey("ctrl", "v")

  • Ctrl + V 입력

⑪ screenshot("저장경로", region=(100, 100, 50, 50))

  • 부분 캡쳐
  • region의 속성 값: x좌표, y좌표, 가로 길이, 세로 길이

⑫ write

  • 키보드 입력을 모방하는 메서드로, 문자열이나 특정 키를 누르는 동작에 사용
  • 문자열 입력: pyautogui.write("Hello, World!")
  • 특정 키 입력: pyautogui.write(["enter"])
  • 조합 키 입력: pyautogui.write(["ctrl", "c"])

3. 네이버에서 서울 날씨 자동으로 검색하기

먼저 네이버 검색창의 좌표를 알아내야하기 때문에, 화면을 분할하여 좌편에는 VS Code를 띄워놓고, 우편에는 네이버 페이지를 띄워놓는다.

네이버 검색창의 좌표를 측정해보니 (1470, 255)가 나왔다. 이 값을 이용해 아래와 같이 코드를 작성할 수 있다.

이제 이 코드를 실행해보면 마우스가 저절로 이동하여 서울 날씨를 검색한다.

4. 서울 날씨 자동 캡쳐 후 저장하기

이번에도 캡쳐할 화면의 마우스 좌표를 먼저 알아야 한다.


위 끝의 좌표는 (998, 317)이 나왔다.

아래 끝의 좌표는 (1838, 827)이 나왔다. 이제 이 좌표를 이용해 캡쳐에 활용하면 된다.

여기서 주의해야 할 점은, region의 속성 값으로 위 끝과 아래 끝의 좌표를 대입하는 게 아니라, 위 끝 좌표를 기준으로 한 가로와 세로 길이를 입력해주어야 한다는 것이다. 코드를 실행해보니 캡쳐가 정상적으로 진행되었다.

5. 여러 지역의 날씨를 자동으로 캡쳐한 후 저장하기

이번에는 네이버가 아닌 다른 사이트에서도 실행될 수 있는 범용적인 실행파일을 만들어보자. 이번에는 주소 입력창의 (x, y) 좌표를 알아보기로 하자.

이번에는 (1205, 70)이라는 결과가 나왔다.

또한, 연속적인 검색을 위해 검색 후 나오는 화면의 검색창 좌표도 알아야 한다.

그 결과, (1066, 177)이 나왔다. 이 결과를 활용하여 아래와 같이 코드를 작성하자.

for문에 idx를 추가한 이유는 첫번째 검색의 좌표가 다른 검색의 좌표와 다르기 때문이다. 이 때, enumerate를 쓰면 인덱스와 값을 한 번에 반환받을 수 있다. 이제 코드를 실행만 하면되는데, 코드를 실행하기 전에 한영 키로 영어로 설정되었는지 확인해야 한다. 코드의 실행 결과는 아래와 같다.

profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글