Playwright를 활용한 웹 크롤링 실전 예제

9. Playwright를 활용한 웹 크롤링 실전 예제

Playwright는 마이크로소프트가 만든 오픈소스 브라우저 자동화 도구로, 크롬(Chromium), 파이어폭스(Firefox), 웹킷(WebKit)을 모두 지원합니다. 자바스크립트 렌더링은 물론 Cloudflare 보안 페이지, 동적 콘텐츠까지도 문제없이 처리할 수 있어 웹 크롤링에 매우 적합합니다.

9.1 Playwright 설치 방법


pip install playwright
playwright install

playwright install 명령어는 크롬 등 브라우저 바이너리를 자동 설치해줍니다.

9.2 기본 사용 예제: 제목 가져오기


from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()

9.3 특정 요소의 텍스트 가져오기


from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://quotes.toscrape.com")
    
    # 첫 번째 인용문 텍스트 추출
    quote = page.locator(".quote .text").first.text_content()
    print("Quote:", quote)
    browser.close()

9.4 로그인 후 데이터 크롤링


from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com/login")
    
    # 로그인 정보 입력
    page.fill('input[name="username"]', "your_username")
    page.fill('input[name="password"]', "your_password")
    page.click('button[type="submit"]')
    
    page.wait_for_load_state("networkidle")  # 로그인 후 로딩 완료까지 대기
    
    # 로그인 후 특정 페이지로 이동
    page.goto("https://example.com/dashboard")
    print("Dashboard Title:", page.title())
    browser.close()

9.5 스크린샷 저장


from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")
    page.screenshot(path="screenshot.png", full_page=True)
    browser.close()

9.6 Cloudflare 우회

Playwright는 기본적으로 실제 브라우저를 사용하는 구조이기 때문에 Cloudflare 보안 페이지나 JS challenge도 자연스럽게 통과합니다. 따로 우회 코드를 넣지 않아도 됩니다.

9.7 Headless / Headful 모드 전환

  • headless=True: 백그라운드 실행 (빠름)
  • headless=False: 실제 브라우저 창이 열림 (디버깅에 유리)

browser = p.chromium.launch(headless=False)

10. 마무리

Playwright는 Selenium보다 더 간편하면서도 강력한 웹 크롤링 기능을 제공합니다. 특히 Cloudflare 차단 우회, 빠른 속도, 자동 로그인, PDF/스크린샷 저장 등에서 매우 우수한 성능을 보입니다. 웹 크롤링을 본격적으로 하려는 분이라면 반드시 한번쯤 익혀야 할 도구입니다.

다음 글에서는 Playwright와 데이터베이스 저장, 엑셀 저장, 스케줄링 자동화를 함께 연결해보는 방법을 소개하겠습니다.