
شوكة من الدمى التي تعمل على دينو.
Puppeteer هي مكتبة توفر واجهة برمجة تطبيقات عالية المستوى للتحكم في الكروم أو الكروم أو Firefox الليلي فوق بروتوكول DevTools. يعمل Puppeteer مقطوعة الرأس بشكل افتراضي ، ولكن يمكن تكوينها لتشغيل الكروم أو الكروم الكامل (غير بدون رأس).
معظم الأشياء التي يمكنك القيام بها يدويًا في المتصفح يمكن القيام بها باستخدام Puppeteer! فيما يلي بعض الأمثلة لتبدأ:
لاستخدام Puppeteer ، استيراده مثل:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;يمكن لـ Puppeteer استخدام أي إصدار حديث من Chromium أو Firefox Nightly ، ولكن يتم التحقق من صحة هذا الإصدار من 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 مألوفًا للأشخاص الذين يستخدمون أطر اختبار المتصفح الأخرى. يمكنك إنشاء مثيل Browser ، وفتح الصفحات ، ثم تلاعبها مع API Puppeteer.
مثال - التنقل إلى https://example.com وحفظ لقطة شاشة على سبيل المثال .
احفظ الملف على سبيل المثال
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 . تُرجع إحدى الطرق أيضًا موقعًا على شبكة الإنترنت ReadableStream بدلاً من العقدة Readable .
بخلاف هذا ، فإن الوثائق على https://ptr.dev تنطبق عمومًا.
يمكن العثور على مثال Dockerfile في هذا المستودع. سيقوم بتثبيت جميع التبعيات اللازمة ، ويوضح كيفية تشغيل ./examples/docker.js.
يُقصد به فقط نقطة القفز - قم بتخصيصها كما يحلو لك.