본문 바로가기
IT/자동화, 웹스크래핑

[puppeteer,node.js] 웹 자동화 라이브러리 Puppeteer

by goodchuck 2024. 5. 29.

목차

     

     

     개요

    Puppeteer는 구글이 만든 Node.js 라이브러리로, Headless Chrome 또는 Chrominum 브라우저를 제어할 수 있는 기능을 제공한다. 이 라이브러리는 브라우저를 프로그래밍적으로 제어하고, 다양한 브라우저 작업을 자동화하는데 사용된다.

     

     주요 기능

     

    웹 스크래핑(Web Scraping)

    • Puppeteer는 웹 페이지의 내용을 가져오거나 특정 데이터 요소를 추출하는 데 사용된다.
    • JavaScript가 렌더링한 콘텐츠를 포함하여 브라우저에서 볼 수 있는 모든 것을 캡처할 수 있다.

    자동화된 테스트(Automated Testing)

    • 프론트엔드 테스트 자동화 도구로, 브라우저 환경에서 애플리케이션을 테스트 할 수 있다.
    • 다양한 사용자 상호작용을 시뮬레이션하여 애플리케이션의 동작을 검증할 수 있다.

    PDF 생성

    • 웹 페이지를 PDF 형식으로 저장할 수 있다.
    • 페이지 크기, 배경, 여백 등의 옵션을 설정하여 PDF를 생성할 수 있다.

    스크린샷 캡처

    • 특정 웹 페이지의 스크린샷을 캡처할 수 있다.
    • 전체 페이지, 특정 영역 또는 특정 요소의 스크린샷을 찍을 수 있다.

    애플리케이션 모니터링

    • 웹 애플리케이션의 성능을 모니터링하고, 페이지 로드 시간, 렌더링 시간 등을 측정할 수 있다.

     코드 예시

    const puppeteer = require('puppeteer');
    
    (async () => {
      // 브라우저를 시작하고 새로운 페이지를 엽니다.
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      
      // 특정 URL로 이동합니다.
      await page.goto('https://example.com');
      
      // 페이지의 스크린샷을 찍습니다.
      await page.screenshot({ path: 'example.png' });
      
      // 브라우저를 닫습니다.
      await browser.close();
    })();

    주요 특징

    • Headless 모드 : 브라우저가 실제로 화면을 렌더링하지 않지만, 모든 동작을 수행할 수 있다. 이는 자원을 절약하고 속도를 높이는 데 유용하다.
    • Headful 모드 : 브라우저가 실제로 화면을 렌더링하며, 디버깅 또는 시각적 확인이 필요할 때 유용하다.
    • DevTool 프로토콜 : Puppeteer는 크롬 DevTools 프로토콜을 통해 브라우저와 상호작용한다. 이를 통해 매우 세밀한 제어가 가능하다.

     요약

    Puppeteer는 강력한 기능과 유연성을 제공하여 웹 개발, 테스트, 스크래핑 등 다양한 용도로 사용될 수 있는 도구이다.