หากต้องการใช้ 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()
สำหรับข้อมูลเพิ่มเติม
- Chromium กับ Chrome ต่างกันอย่างไร จาก How-To Geek
- เอกสาร Chromium อธิบายความแตกต่างบางอย่างสำหรับผู้ใช้ Linux
สร้างโปรไฟล์ผู้ใช้ใหม่
Puppeteer สร้างโปรไฟล์ผู้ใช้เบราว์เซอร์ของตนเองซึ่งจะล้างข้อมูลทุกครั้งที่ทำงาน
ขั้นตอนถัดไป
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Chrome แบบ Headless
- ดูตัวอย่าง