Playwright는 Selenium과 같이, 동적으로 웹 데이터를 수집 (크롤링)하기 위한 좋은 자동화 도구로 꼽히고 있습니다. 빠르고 안정적인 실행 부분에서 강점을 보이고 있는 도구인 Playwright에 대해 함꼐 알아가 보겠습니다.
1. Playwright 개념
Playwright는 Microsoft에서 개발한 최신 웹 자동화 도구입니다. 크로미움, 파이어폭스, 웹킷 등 다양한 브라우저를 지원하며, Node.js, Python, Java, .NET 등 여러 언어에서도 사용할 수 있습니다. Selenium과 비슷한 역할을 하지만, 더 빠르고 안정적인 실행이 가능하며 비동기 방식으로 동작하는 특징이 있습니다. 특히 JavaScript로 동작하는 동적 웹페이지의 데이터를 수집할 때 큰 장점을 발휘합니다. Puppeteer와 유사하지만 더 많은 기능을 제공하고, 브라우저 간 테스트도 쉽게 지원합니다. 크롤링 외에도 자동화 테스트, 스크린샷 캡처, PDF 생성 등 다양한 작업에 활용됩니다. 설치는 간단히 `pip install playwright`로 가능하며, `playwright install` 명령어를 통해 필요한 브라우저도 설치할 수 있습니다.
2. Playwright 활용 사례
Playwright는 다양한 분야에서 활용됩니다. 가장 대표적인 활용처는 웹사이트의 UI 자동 테스트입니다. 버튼 클릭, 페이지 이동, 텍스트 입력 등 실제 사용자의 행동을 시뮬레이션하면서 버그나 UI 깨짐 현상을 자동으로 체크할 수 있습니다. 또한 웹 크롤링 분야에서도 자주 사용되는데요, JavaScript로 동작하는 페이지에서도 데이터를 정확하게 가져올 수 있어 뉴스 사이트, 쇼핑몰, 포털 등의 실시간 데이터 수집에 매우 유용합니다. 예를 들어 쇼핑몰에서 특정 키워드로 검색했을 때 나오는 상품 목록이나, 실시간 날씨 정보를 수집할 때 Playwright를 사용하면 간편하게 데이터를 가져올 수 있습니다. 최근에는 자동 로그인, CAPTCHA 우회, SNS 게시물 자동화에도 적극 활용되고 있습니다.
3. Playwright 실제 코드
이제 실제로 동적인 웹페이지를 크롤링하는 Playwright 코드를 한번 살펴보겠습니다. 아래는 Python을 이용한 예제로, 네이버에서 '날씨'를 검색한 후 결과 페이지의 제목을 출력하는 간단한 예제를 알아보겠습니다. headless=True로 설정할 경우, GUI 환경이 설치되어 있지 않더라도 백그라운드에서 실행하여 결과를 확인해 볼 수 있습니다.
# 먼저 playwright 설치: pip install playwright
# 브라우저 설치: playwright install
from playwright.sync_api import sync_playwright
def run():
with sync_playwright() as p:
browser = p.chromium.launch(headless=True) # 브라우저 비표시 모드
page = browser.new_page()
page.goto("https://www.naver.com") # 네이버 접속
page.fill("input[name='query']", "날씨") # 검색창에 '날씨' 입력
page.keyboard.press("Enter") # 엔터 키 입력
page.wait_for_selector("h3") # 검색 결과 대기
titles = page.query_selector_all("h3") # 결과 제목 추출
for title in titles:
print(title.inner_text()) # 제목 출력
browser.close()
run()
위 코드는 크롬 브라우저를 띄우지 않고(headless) 실행되며, 네이버 메인 페이지에서 '날씨'를 검색한 뒤 검색 결과의 제목(h3 태그)을 모두 출력하여 반환해 줍니다.
실행하기 전 반드시 `playwright install`을 해주세요. 복잡하지 않으면서도 Playwright의 핵심 기능을 잘 보여주는 예제를 설명 드렸는데, playwright는 pip install 로도 사용이 가능합니다.