[python] Requests-HTML로 웹 페이지의 마우스 움직임 추적하기

웹 개발자들은 종종 웹 사이트의 사용자 동작을 추적하고 분석하는 일을 해야합니다. 이 중에서도 마우스 움직임은 사용자의 행동 패턴을 이해하고 전략을 구성하는 데 매우 중요한 정보입니다. 이번에는 Python의 Requests-HTML 라이브러리를 사용하여 웹 페이지의 마우스 움직임을 추적하는 방법을 알아보겠습니다.

Requests-HTML이란?

Requests-HTML은 Python에서 HTTP 요청을 처리하고 HTML을 파싱하는 데 사용되는 라이브러리입니다. 편리한 인터페이스와 유연한 기능을 제공하며, 웹 스크레이핑 및 웹 자동화 작업에 적합합니다.

마우스 움직임 추적하기

마우스 움직임을 추적하기 위해서는 웹 페이지에서 JavaScript를 실행해야 합니다. Requests-HTML은 HTML 파싱을 위해 Pyppeteer를 사용하므로 JavaScript를 실행할 수 있습니다.

from requests_html import HTMLSession
session = HTMLSession()

# 타겟 URL 로드
response = session.get('https://example.com')

# JavaScript 실행
response.html.render(sleep=1)

# 마우스 움직임 추적
mouse_movement_script = """
    (function() {
        var positions = [];
        document.addEventListener('mousemove', function(e) {
            positions.push({x: e.clientX, y: e.clientY});
        });
        return positions;
    })();
"""

mouse_positions = response.html.execute_script(mouse_movement_script)

위 예시 코드는 Requests-HTML을 사용하여 ‘https://example.com’ 페이지를 로드하고, JavaScript를 실행하여 마우스 움직임을 추적합니다. response.html.render() 메서드를 사용하여 JavaScript를 실행하기 전에 페이지를 렌더링할 시간을 확보합니다. 그 후에는 response.html.execute_script() 메서드를 사용하여 JavaScript를 실행합니다.

마우스 움직임을 추적하는 JavaScript 코드는 mousemove 이벤트를 리스닝하여 마우스의 위치를 배열에 저장하는 기능을 가지고 있습니다. 이렇게 추적된 마우스 위치는 mouse_positions 변수에 저장됩니다.

결과 확인하기

추적된 마우스 위치를 확인하기 위해 간단한 예시를 만들어보겠습니다.

import matplotlib.pyplot as plt

x_values = [pos['x'] for pos in mouse_positions]
y_values = [pos['y'] for pos in mouse_positions]

plt.plot(x_values, y_values)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Mouse Movement')
plt.show()

위 예시 코드는 추적된 마우스 위치를 x좌표와 y좌표로 분리하여 matplotlib를 사용하여 그래프로 표시합니다. 추적된 마우스 위치의 패턴을 확인할 수 있습니다.

결론

Requests-HTML과 함께 JavaScript를 실행하여 마우스 움직임을 추적할 수 있습니다. 이를 통해 다양한 웹 자동화 및 데이터 수집 작업을 수행할 수 있으며, 사용자 동작에 기반한 분석을 진행할 수 있습니다.

참고 자료