Bắt đầu nhanh hình con rối

Để sử dụng Puppeteer trong dự án, trước tiên, bạn phải cài đặt công cụ này.

Cài đặt

npm i puppeteer
# or "yarn add puppeteer"

Khi bạn cài đặt Puppeteer, công cụ này sẽ tải phiên bản Chromium mới nhất (~170MB Mac, ~282MB Linux, ~280MB Win) và phiên bản này đảm bảo hoạt động được với API. Để bỏ qua quá trình tải xuống, tải xuống một đường dẫn khác hoặc tải một trình duyệt khác xuống, hãy xem phần Biến môi trường.

múa rối

Kể từ phiên bản 1.7.0, chúng tôi phát hành gói puppeteer-core. Theo mặc định, phiên bản Puppeteer này không tải bất kỳ trình duyệt nào xuống.

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

puppeteer-core là phiên bản gọn nhẹ của Puppeteer để chạy một chế độ cài đặt trình duyệt hiện có hoặc để kết nối với một trình duyệt từ xa. Đảm bảo rằng phiên bản puppeteer-core mà bạn cài đặt tương thích với trình duyệt mà bạn định kết nối.

Xem nội dung về thầy rối so với cốt lõi của múa rối.

Cách sử dụng

Puppeteer tuân theo phiên bản bảo trì LTS mới nhất của Nút.

Puppeteer có thể quen thuộc với những người sử dụng các khung thử nghiệm trình duyệt khác. Bạn tạo một thực thể của Browser, mở các trang, sau đó thao tác các trang đó bằng API của Puppeteer.

Lưu ảnh chụp màn hình

Ví dụ: để điều hướng đến https://example.com và lưu ảnh chụp màn hình dưới dạng example.png, hãy lưu mã sau vào 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 đặt kích thước trang ban đầu là 800×600px, giúp xác định kích thước ảnh chụp màn hình. Bạn có thể tuỳ chỉnh kích thước trang bằng Page.setViewport().

Tạo một tệp PDF

Lưu tệp dưới dạng 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();
})();

Thực thi tập lệnh trên dòng lệnh:

node hn.js

Xem Page.pdf() để biết thêm thông tin về cách tạo tệp pdf.

Đánh giá tập lệnh theo bối cảnh của trang

Lưu tệp dưới dạng 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();
})();

Thực thi tập lệnh trên dòng lệnh:

node get-dimensions.js

Xem bài viết Đánh giá JavaScript để biết thêm thông tin về việc đánh giá và các phương thức liên quan, chẳng hạn như evaluateOnNewDocumentexposeFunction.

Chế độ cài đặt thời gian chạy mặc định

Sử dụng chế độ Không có giao diện người dùng

Puppeteer chạy Chromium ở chế độ không có giao diện người dùng. Để chạy phiên bản Chromium đầy đủ, hãy đặt tuỳ chọn headless khi khởi chạy trình duyệt:

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

Chạy một phiên bản Chromium đi kèm

Theo mặc định, Puppeteer sẽ tải xuống và sử dụng một phiên bản Chromium cụ thể để API của nó được đảm bảo hoạt động tốt. Để sử dụng Puppeteer với một phiên bản Chrome hoặc Chromium khác, hãy truyền đường dẫn của tệp thực thi khi tạo thực thể Browser:

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

Bạn cũng có thể sử dụng Puppeteer với Firefox Nightly (hỗ trợ thử nghiệm). Hãy xem Puppeteer.launch() để biết thêm thông tin.

Để biết thêm thông tin:

Tạo hồ sơ người dùng mới

Puppeteer tạo hồ sơ người dùng trình duyệt của riêng mình và sẽ dọn dẹp hồ sơ này mỗi lần chạy.

Các bước tiếp theo