프로그램 (PHP,Python)
n8n에서 Playwright와 Python 활용한 웹페이지 스냅샷 캡처
날으는물고기
2024. 6. 3. 00:13
n8n에서 Puppeteer 확장을 사용하는 대신 외부 시스템에서 Playwright와 Python을 활용해 웹 페이지의 스크린샷을 캡처하고, 이를 n8n을 통해 슬랙 채널로 전송하는 프로세스를 간단하게 설명하겠습니다.
Playwright 환경 설정 및 스크립트 준비
- Python 및 Playwright 설치
- Python을 설치합니다.
- Python 환경에 Playwright를 설치합니다.
pip install playwright playwright install
- 스크린샷 캡처 스크립트 작성
- 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에서 호출하기
- 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 노드 구성
- HTTP Request 노드 설정
- n8n 워크플로우에 HTTP Request 노드를 추가합니다.
- 이 노드를 사용하여 방금 설정한 Python API 서버의
/screenshot
엔드포인트로 요청을 보냅니다. - 응답으로 받은 이미지 데이터를 다음 노드로 전달합니다.
슬랙으로 스크린샷 전송
- 슬랙 노드 설정
- n8n 워크플로우에 슬랙 노드를 추가합니다.
- 슬랙 노드를 사용하여 캡처한 스크린샷을 특정 슬랙 채널로 보냅니다.
이렇게 설정하면 n8n 워크플로우를 사용하여 외부 시스템의 Playwright와 Python 스크립트를 호출하고, 결과 스크린샷을 슬랙 채널로 자동으로 전송할 수 있습니다. 이 방법을 통해 Chromium 설치 문제를 우회할 수 있습니다.
728x90