프로그램 (PHP,Python)

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

날으는물고기 2024. 6. 3. 00:13

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