[작성자:] 관리자

  • 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와 데이터베이스 저장, 엑셀 저장, 스케줄링 자동화를 함께 연결해보는 방법을 소개하겠습니다.