คู่มือเริ่มต้นฉบับย่อสำหรับหุ่นเชิด

หากต้องการใช้ Puppeteer ในโปรเจ็กต์ คุณต้องติดตั้ง Puppeteer ก่อน

การติดตั้ง

npm i puppeteer
# or "yarn add puppeteer"

เมื่อคุณติดตั้ง Puppeteer ระบบจะดาวน์โหลด Chromium เวอร์ชันล่าสุด (Mac ประมาณ 170 MB, Linux ~282 MB, ชนะประมาณ 280 MB) ซึ่งรับประกันว่าจะทำงานกับ API ได้ หากต้องการข้ามการดาวน์โหลด ดาวน์โหลดไปยังเส้นทางอื่น หรือดาวน์โหลดเบราว์เซอร์อื่น โปรดดูตัวแปรสภาพแวดล้อม

แกนหุ่นเชิด

เราเผยแพร่แพ็กเกจ puppeteer-core ตั้งแต่เวอร์ชัน 1.7.0 Puppeteer เวอร์ชันนี้ไม่ดาวน์โหลดเบราว์เซอร์ใดๆ เป็นค่าเริ่มต้น

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

puppeteer-core มีไว้เพื่อเป็น Puppeteer เวอร์ชันน้ำหนักเบาสำหรับการเปิดใช้งานการติดตั้งเบราว์เซอร์ที่มีอยู่หรือสำหรับการเชื่อมต่อกับรีโมต โปรดตรวจสอบว่า puppeteer-core เวอร์ชันที่คุณติดตั้งนั้นสามารถทำงานร่วมกับเบราว์เซอร์ที่คุณต้องการจะเชื่อมต่อได้

ดู puppeteer กับ puppeteer-core

การใช้งาน

Puppeteer ติดตามโหนด LTS สำหรับการบำรุงรักษาเวอร์ชันล่าสุด

Puppeteer มีแนวโน้มที่จะคุ้นเคยกับผู้ที่ใช้เฟรมเวิร์กการทดสอบเบราว์เซอร์อื่นๆ คุณสร้างอินสแตนซ์ของ Browser เปิดหน้าเว็บ แล้วจัดการอินสแตนซ์ด้วย Puppeteer's 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×600px ซึ่งจะกำหนดขนาดภาพหน้าจอ คุณปรับแต่งขนาดหน้าเว็บได้ด้วย 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

ดูประเมิน JavaScript สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการประเมินและวิธีการที่เกี่ยวข้อง เช่น evaluateOnNewDocument และ exposeFunction

การตั้งค่ารันไทม์เริ่มต้น

ใช้โหมดไม่มีส่วนหัว

Puppeteer เปิด Chromium ในโหมด Headless หากต้องการเปิด Chromium เวอร์ชันเต็ม ให้ตั้งค่าตัวเลือก headless เมื่อเปิดเบราว์เซอร์ดังนี้

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

เรียกใช้ Chromium เวอร์ชันแพ็กเกจ

โดยค่าเริ่มต้น Puppeteer จะดาวน์โหลดและใช้ Chromium เวอร์ชันที่เจาะจงเพื่อให้มั่นใจได้ว่า API จะทำงานได้ทันที หากต้องการใช้ Puppeteer กับ Chrome หรือ Chromium เวอร์ชันอื่น ให้ส่งเส้นทางของไฟล์ปฏิบัติการเมื่อสร้างอินสแตนซ์ Browser ดังนี้

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

คุณยังสามารถใช้ Puppeteer กับ Firefox Nightly (การสนับสนุนเวอร์ชันทดลอง) ได้ ดูข้อมูลเพิ่มเติมได้ที่ Puppeteer.launch()

สำหรับข้อมูลเพิ่มเติม

สร้างโปรไฟล์ผู้ใช้ใหม่

Puppeteer สร้างโปรไฟล์ผู้ใช้เบราว์เซอร์ของตนเองซึ่งจะล้างข้อมูลทุกครั้งที่ทำงาน

ขั้นตอนถัดไป