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