Puppeteer 빠른 시작

프로젝트에서 Puppeteer를 사용하려면 먼저 Puppeteer를 설치해야 합니다.

설치

npm i puppeteer
# or "yarn add puppeteer"

Puppeteer를 설치하면 API와 호환이 보장되는 최신 버전의 Chromium(Mac에서는 약 170MB, Linux는 282MB, Win 버전은 약 280MB)을 다운로드합니다. 다운로드를 건너뛰거나, 다른 경로로 다운로드하거나, 다른 브라우저를 다운로드하려면 환경 변수를 참고하세요.

꼭두각시 인형

버전 1.7.0부터 puppeteer-core 패키지를 게시합니다. 이 버전의 Puppeteer는 기본적으로 브라우저를 다운로드하지 않습니다.

npm i puppeteer-core
# or "yarn add puppeteer-core"

puppeteer-core은 기존 브라우저 설치를 실행하거나 원격 브라우저에 연결하기 위한 경량 버전의 Puppeteer로 고안되었습니다. 설치하는 Puppeteer-core 버전이 연결하려는 브라우저와 호환되는지 확인합니다.

puppeteer와 Puppeteer-core 비교를 참고하세요.

사용

Puppeteer는 Node의 최신 유지보수 LTS 버전을 따릅니다.

Puppeteer는 다른 브라우저 테스트 프레임워크를 사용하는 사람들에게 익숙할 것입니다. Browser 인스턴스를 만들고 페이지를 연 다음 Puppeteer의 API를 사용하여 조작합니다.

스크린샷 저장

예를 들어 https://example.com로 이동하여 스크린샷을 example.png로 저장하려면 다음 코드를 example.js에 저장합니다.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'example.png' });

  await browser.close();
})();

Puppeteer는 초기 페이지 크기를 800×600픽셀로 설정하여 스크린샷 크기를 정의합니다. 페이지 크기는 Page.setViewport()를 사용하여 맞춤설정할 수 있습니다.

PDF 만들기

파일을 hn.js로 저장합니다.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://news.ycombinator.com', {
    waitUntil: 'networkidle2',
  });
  await page.pdf({ path: 'hn.pdf', format: 'a4' });

  await browser.close();
})();

명령줄에서 스크립트를 실행합니다.

node hn.js

PDF 만들기에 관한 자세한 내용은 Page.pdf()를 참고하세요.

페이지 맥락에서 스크립트 평가

파일을 get-dimensions.js로 저장합니다.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  // Get the "viewport" of the page, as reported by the page.
  const dimensions = await page.evaluate(() => {
    return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      deviceScaleFactor: window.devicePixelRatio,
    };
  });

  console.log('Dimensions:', dimensions);

  await browser.close();
})();

명령줄에서 스크립트를 실행합니다.

node get-dimensions.js

평가 및 관련 메서드(예: evaluateOnNewDocument, exposeFunction)에 관한 자세한 내용은 JavaScript 평가를 참고하세요.

기본 런타임 설정

헤드리스 모드 사용

Puppeteer는 Chromium을 헤드리스 모드로 실행합니다. Chromium 정식 버전을 실행하려면 브라우저를 실행할 때 headless 옵션을 설정합니다.

const browser = await puppeteer.launch({ headless: false }); // default is true

Chromium 번들 버전을 실행합니다.

기본적으로 Puppeteer는 특정 버전의 Chromium을 다운로드하고 사용하므로 즉시 API가 작동합니다. 다른 버전의 Chrome 또는 Chromium과 함께 Puppeteer를 사용하려면 Browser 인스턴스를 만들 때 실행 파일의 경로를 전달합니다.

const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' });

Puppeteer를 Firefox Nightly와 함께 사용할 수도 있습니다 (실험적 지원). 자세한 내용은 Puppeteer.launch()를 참조하세요.

추가 정보:

새 사용자 프로필 생성

Puppeteer는 자체 브라우저 사용자 프로필을 만들어 실행할 때마다 정리합니다.

다음 단계