
Вилка кукловода, работающего на Дено.
Кукольник-это библиотека, которая обеспечивает API высокого уровня для контроля хрома, хрома или Firefox по ночам по протоколу DevTools. По умолчанию кукольник запускает без головы, но может быть настроен на запуск полного (без головы) хрома или хрома.
Большинство вещей, которые вы можете сделать вручную в браузере, можно сделать с помощью кукловода! Вот несколько примеров, которые вы можете начать:
Чтобы использовать кукольник, импортируйте его так:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Кукловодитель может использовать любую недавнюю версию Chromium или Firefox Nightly, но эта версия кукловода подтверждена только против конкретной версии. Чтобы кэшировать эти версии в кэше кукловода, запустите команды ниже.
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Вы можете найти все поддерживаемые переменные среды для настройки установки в документах кукловода.
Кукольник будет знаком людям, использующим другие рамки тестирования браузера. Вы создаете экземпляр Browser , открытых страниц, а затем манипулируете им с помощью API кукловода.
Пример - навигация на 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 Кукольник устанавливает начальный размер страницы до 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 эффективно запускает обычную версию кукловода, за исключением некоторых незначительных изменений, чтобы сделать его совместимым с DENO.
Наиболее заметная разница в том, что вместо некоторых методов принимают / возвращают Buffer узла, они принимают / возвращают Uint8Array . Один из методов также возвращает веб -насыщенную ReadableStream вместо Readable узла.
Кроме этого, документация на https://pptr.dev обычно применяется.
Пример DockerFile можно найти в этом репозитории. Он установит все необходимые зависимости и показывает, как запустить ./examples/docker.js.
Это просто подразумевается как точка прыжка - настраивайте ее по своему желанию.