본문 바로가기
DEVEL/PYTHON

Python Playwright를 이용한 스크래핑

by codebyai 2024. 8. 31.
반응형

 

Python에서 Playwright를 사용하여 웹 스크래핑을 수행하는 방법을 단계별로 설명하겠습니다. Playwright는 강력한 웹 자동화 도구로, 다양한 브라우저를 지원하며 빠르고 안정적인 스크래핑을 할 수 있게 해줍니다.

1. Playwright 설치
먼저 Playwright를 설치해야 합니다. Python 환경에서 아래 명령어를 실행하세요:

pip install playwright




설치 후 브라우저 이진 파일을 다운로드해야 합니다.

playwright install




2. Playwright 기본 사용법

Playwright를 사용하여 웹 페이지를 열고 데이터를 스크래핑하는 기본 예제를 보여드리겠습니다.

from playwright.sync_api import sync_playwright

# Playwright 실행
with sync_playwright() as p:
    # 브라우저를 엽니다 (크롬, 파이어폭스, 웹킷 중 하나 선택 가능)
    browser = p.chromium.launch(headless=False)  # headless=False로 설정하면 브라우저가 보이게 됩니다.
    
    # 새 페이지를 엽니다
    page = browser.new_page()
    
    # 스크랩할 웹사이트로 이동합니다
    page.goto('https://example.com')
    
    # 페이지의 제목을 가져옵니다
    title = page.title()
    print(f"Page title: {title}")
    
    # 특정 요소의 텍스트를 가져옵니다
    content = page.text_content('h1')
    print(f"Heading: {content}")
    
    # 스크린샷을 찍어 저장합니다
    page.screenshot(path='example.png')
    
    # 브라우저를 닫습니다
    browser.close()



3. 고급 스크랩핑
Playwright는 매우 유연하며, 로그인, 양식 제출, 데이터 추출 등의 다양한 작업을 수행할 수 있습니다.

#예시: 로그인 후 특정 데이터 스크랩

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    
    # 로그인 페이지로 이동
    page.goto('https://example-login-page.com')
    
    # 사용자명과 비밀번호 입력
    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')
    
    # 특정 데이터 스크랩
    data = page.text_content('.specific-data-selector')
    print(f"Scraped data: {data}")
    
    # 브라우저 종료
    browser.close()



4. 스크랩핑 시 주의사항
- robots.txt 준수: 웹사이트의 `robots.txt` 파일을 확인하여 스크랩핑이 허용되는지 확인하세요.
- 적절한 요청 속도 유지: 서버에 과도한 부하를 주지 않도록 요청 간 간격을 두세요.
- IP 차단 대비: 과도한 요청으로 IP가 차단될 수 있으므로 프록시 서버나 VPN을 사용할 수 있습니다.
- 법적 문제: 스크랩핑하려는 사이트의 이용 약관을 확인하고 법적 문제가 발생하지 않도록 주의하세요.

5. 추가 기능 및 확장
- 데이터 저장: 스크랩된 데이터를 CSV, JSON, 데이터베이스 등에 저장할 수 있습니다.
- 헤드리스 모드: 브라우저를 보이지 않게(headless 모드) 실행하여 성능을 향상시킬 수 있습니다.
- 동적 페이지 처리: Playwright는 AJAX로 동적으로 로드되는 데이터도 처리할 수 있습니다.

이 기본 예제를 시작점으로, 다양한 웹 사이트에서 데이터를 스크래핑할 수 있습니다. 필요에 따라 Playwright의 문서를 참조하여 더 복잡한 시나리오를 구현할 수 있습니다.

반응형

'DEVEL > PYTHON' 카테고리의 다른 글

PYTHON 두장의 이미지 합성하기  (0) 2024.04.09
PYTHON ChatGPT API 예제  (0) 2023.07.25
PYTHON 내 주소에 이더리움 거래 조회  (0) 2023.07.18
[PYTHON] requests 구글 검색  (0) 2023.04.03
[PYTHON] selenium 구글 검색  (1) 2023.04.03