본문 바로가기
프로그램 (PHP,Python)

n8n에서 Playwright와 Python 활용한 웹페이지 스냅샷 캡처

by 날으는물고기 2024. 6. 3.

n8n에서 Playwright와 Python 활용한 웹페이지 스냅샷 캡처

n8n에서 Puppeteer 확장을 사용하는 대신 외부 시스템에서 Playwright와 Python을 활용해 웹 페이지의 스크린샷을 캡처하고, 이를 n8n을 통해 슬랙 채널로 전송하는 프로세스를 간단하게 설명하겠습니다.

Playwright 환경 설정 및 스크립트 준비

  1. Python 및 Playwright 설치
    • Python을 설치합니다.
    • Python 환경에 Playwright를 설치합니다.
      pip install playwright
      playwright install
  2. 스크린샷 캡처 스크립트 작성
    • Python을 사용하여 Playwright 스크립트를 작성합니다. 이 스크립트는 웹 페이지를 열고 스크린샷을 캡처한 다음, 이를 파일로 저장합니다.
    • 예를 들어, 다음 스크립트는 주어진 URL의 스크린샷을 캡처합니다.
      from playwright.sync_api import sync_playwright
      
      def run(playwright):
          browser = playwright.chromium.launch()
          page = browser.new_page()
          page.goto("https://example.com")  # 캡처하고자 하는 URL 입력
          page.screenshot(path="screenshot.png")
          browser.close()
      
      with sync_playwright() as playwright:
          run(playwright)

Python 스크립트를 n8n에서 호출하기

  1. Python API 서버 구성
    • Flask 같은 프레임워크를 사용하여 간단한 API 서버를 구성합니다. 이 서버는 외부 요청을 받아 Python 스크립트를 실행하고 스크린샷 파일을 반환할 수 있어야 합니다.
    • 예를 들어 Flask를 사용하여 API 서버를 설정할 수 있습니다.
      from flask import Flask, send_file
      from playwright.sync_api import sync_playwright
      
      app = Flask(__name__)
      
      @app.route('/screenshot')
      def screenshot():
          with sync_playwright() as playwright:
              browser = playwright.chromium.launch()
              page = browser.new_page()
              page.goto("https://example.com")
              page.screenshot(path="screenshot.png")
              browser.close()
          return send_file("screenshot.png", mimetype='image/png')
      
      if __name__ == "__main__":
          app.run(port=5000)

n8n에서 HTTP Request 노드 구성

  1. HTTP Request 노드 설정
    • n8n 워크플로우에 HTTP Request 노드를 추가합니다.
    • 이 노드를 사용하여 방금 설정한 Python API 서버의 /screenshot 엔드포인트로 요청을 보냅니다.
    • 응답으로 받은 이미지 데이터를 다음 노드로 전달합니다.

슬랙으로 스크린샷 전송

  1. 슬랙 노드 설정
    • n8n 워크플로우에 슬랙 노드를 추가합니다.
    • 슬랙 노드를 사용하여 캡처한 스크린샷을 특정 슬랙 채널로 보냅니다.

이렇게 설정하면 n8n 워크플로우를 사용하여 외부 시스템의 Playwright와 Python 스크립트를 호출하고, 결과 스크린샷을 슬랙 채널로 자동으로 전송할 수 있습니다. 이 방법을 통해 Chromium 설치 문제를 우회할 수 있습니다.

728x90

댓글