
데노에서 달리는 인형극의 포크.
Puppeteer는 DevTools 프로토콜을 통해 밤에 크롬, 크롬 또는 Firefox를 제어 할 수있는 고급 API를 제공하는 라이브러리입니다. 인형극은 기본적으로 헤드리스를 실행하지만 크롬 또는 크롬을 완전히 실행하도록 구성 할 수 있습니다.
브라우저에서 수동으로 할 수있는 대부분의 일은 인형극을 사용하여 수행 할 수 있습니다! 시작하기위한 몇 가지 예는 다음과 같습니다.
인형극을 사용하려면 그렇게 가져옵니다.
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppeteer는 최근 버전의 Chromium 또는 Firefox Nightly를 사용할 수 있지만이 버전의 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꼭두각시 문서에서 설치를 사용자 정의하기 위해 지원되는 모든 환경 변수를 찾을 수 있습니다.
인형극은 다른 브라우저 테스트 프레임 워크를 사용하는 사람들에게 친숙 할 것입니다. Browser 인스턴스를 만들고 페이지를 열고 Puppeteer의 API로 조작합니다.
예제 - https://example.com으로 탐색하고 Screenshot을 example.png 로 저장합니다.
example.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 PDF 생성에 대한 자세한 내용은 Page.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와 호환되도록 약간의 변경 사항을 제외하고는 일반 버전의 Puppeteer를 효과적으로 실행합니다.
가장 눈에 띄는 차이점은 노드 Buffer 복용 / 반환하는 일부 방법 대신 Uint8Array 가져 오거나 반환 할 가능성이 높습니다. 하나의 방법은 또한 노드 Readable 대신 웹 네이티브 ReadableStream 반환합니다.
이 외에는 https://pptr.dev의 문서가 일반적으로 적용됩니다.
이 저장소에서 dockerfile 예제를 찾을 수 있습니다. 필요한 모든 종속성을 설치하고 ./examples/docker.js를 실행하는 방법을 보여줍니다.
그것은 단지 점프 오프 포인트로 의미합니다. 원하는대로 커스터마이징하십시오.