
在DeNo上奔跑的偽造者。
Puppeteer是一個圖書館,提供了高級API,可以通過DevTools協議每晚控制Chrome,Chromium或Firefox。 Puppeteer默認情況下無頭運行,但可以配置為完整(無頭)鉻或鉻。
您可以在瀏覽器中手動做的大多數事情都可以使用Puppeteer完成!以下是一些可以讓您入門的示例:
要使用Puppeteer,請這樣導入:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppeteer可以每晚使用任何最近版本的Chromium或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文檔中的安裝。
使用其他瀏覽器測試框架的人將熟悉uppeteer。您可以創建一個Browser ,打開頁面的實例,然後使用Puppeteer的API來操縱它們。
示例- 導航到https://example.com並保存屏幕截圖作為示例.png :
保存文件作為示例。
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有關創建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有效地運行了常規版本的Puppeteer,除了一些較小的更改以使其與Deno兼容。
最明顯的區別可能是,它們取代 /返回節點Buffer而不是某些方法,而是返回Uint8Array 。一種方法還返回Web本機ReadableStream而不是Readable節點。
除此之外,https://pptr.dev上的文檔通常適用。
可以在此存儲庫中找到一個示例Dockerfile。它將安裝所有必要的依賴項,並顯示如何運行./examples/docker.js。
它只是將其作為一個跳躍點 - 按照您的意願進行自定義。