
ส้อมของนักเชิดหุ่นที่ทำงานบน Deno
Puppeteer เป็นห้องสมุดที่ให้ API ระดับสูงเพื่อควบคุมโครเมียมโครเมียมหรือ Firefox ทุกคืนที่ผ่านโปรโตคอล Devtools Puppeteer ทำงานโดยค่าเริ่มต้น แต่สามารถกำหนดค่าให้เรียกใช้โครเมี่ยมหรือโครเมียมเต็มรูปแบบ
สิ่งส่วนใหญ่ที่คุณสามารถทำได้ด้วยตนเองในเบราว์เซอร์สามารถทำได้โดยใช้ Puppeteer! นี่คือตัวอย่างบางส่วนที่จะเริ่มต้น:
หากต้องการใช้ Puppeteer นำเข้าอย่างเช่นนั้น:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppeteer สามารถใช้โครเมียมหรือ Firefox เวอร์ชันล่าสุดได้ แต่ Puppeteer เวอร์ชันนี้ได้รับการตรวจสอบกับเวอร์ชันเฉพาะเท่านั้น ในการแคชเวอร์ชันเหล่านี้ในแคช Puppeteer ให้เรียกใช้คำสั่งด้านล่าง
PUPPETEER_PRODUCT=chrome deno run -A --unstable https://deno.land/x/[email protected]/install.ts
PUPPETEER_PRODUCT=firefox deno run -A --unstable https://deno.land/x/[email protected]/install.tsคุณสามารถค้นหาตัวแปรสภาพแวดล้อมที่รองรับทั้งหมดเพื่อปรับแต่งการติดตั้งในเอกสาร Puppeteer
Puppeteer จะคุ้นเคยกับคนที่ใช้เฟรมเวิร์กการทดสอบเบราว์เซอร์อื่น ๆ คุณสร้างอินสแตนซ์ของ Browser หน้าเปิดแล้วจัดการกับ API ของ Puppeteer
ตัวอย่าง - การนำทางไปยัง https://example.com และบันทึกภาพหน้าจอเป็น ตัวอย่าง png :
บันทึกไฟล์เป็น ตัวอย่าง JS
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
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 ( ) ;เรียกใช้สคริปต์บนบรรทัดคำสั่ง
deno run -A --unstable example.js Puppeteer ตั้งขนาดหน้าเริ่มต้นเป็น 800 × 600px ซึ่งกำหนดขนาดภาพหน้าจอ ขนาดหน้าสามารถปรับแต่งด้วย Page.setViewport()
ตัวอย่าง - สร้าง PDF
บันทึกไฟล์เป็น hn.js
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
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 ( ) ;เรียกใช้สคริปต์บนบรรทัดคำสั่ง
deno run -A --unstable hn.js ดู Page.pdf() สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง PDF
ตัวอย่าง - ประเมินสคริปต์ในบริบทของหน้า
บันทึกไฟล์เป็น get-dimensions.js
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
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 ( ) ;เรียกใช้สคริปต์บนบรรทัดคำสั่ง
deno run -A --unstable get-dimensions.js deno-puppeteer ใช้งาน Puppeteer รุ่นปกติได้อย่างมีประสิทธิภาพยกเว้นการเปลี่ยนแปลงเล็กน้อยเพื่อให้เข้ากันได้กับ Deno
ความแตกต่างที่เห็นได้ชัดเจนที่สุดคือแทนที่จะใช้วิธีการบางอย่างที่ใช้ / ส่งคืน Buffer โหนดพวกเขาใช้ / ส่งคืน Uint8Array วิธีหนึ่งยังส่งคืน Web Native ReadableStream แทนโหนด Readable
นอกเหนือจากนี้เอกสารใน https://pptr.dev ใช้โดยทั่วไป
ตัวอย่าง DockerFile สามารถพบได้ในที่เก็บนี้ มันจะติดตั้งการพึ่งพาที่จำเป็นทั้งหมดและแสดงวิธีเรียกใช้./examples/docker.js
มันมีความหมายว่าเป็นจุดกระโดด - ปรับแต่งตามที่คุณต้องการ