Puppeteer 介紹
Puppeteer 翻譯是操縱木偶的人,利用這個工具,我們能做一個操縱頁面的人。 Puppeteer 是一個 Nodejs 的庫,支持調用 Chrome的API來操縱Web ,相比較 Selenium 或是 PhantomJs ,它最大的特點就是它的操作 Dom 可以完全在內存中進行模擬既在 V8 引擎中處理而不打開瀏覽器,而且關鍵是這個是Chrome團隊在維護,會擁有更好的兼容性和前景。
Puppeteer 用處
Puppeteer 使用
安裝 Puppeteer
由于封網,直接下載 Chromium 會失敗,可以先阻止下載 Chromium 然后再手動下載它
# 安裝命令npm i puppeteer --save# 錯誤信息ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.# 設置環境變量跳過下載 Chromiumset PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 # 或者可以這樣干,只下載模塊而不buildnpm i --save puppeteer --ignore-scripts# 成功安裝模塊+ puppeteer@0.13.0added 1 package in 1.77s
手動下載 Chromium,下載完后將壓縮包解壓,會有個 Chromium.app,將其放在你喜歡的目錄下,例如 /Users/huqiyang/Documents/project/z/chromium/Chromium.app。正常安裝包后 Chromium.app 會在 .local-chromium中
Tip:下載 Chromium 失敗解決辦法
更換國內Chromium源
PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.orgnpm i puppeteer
或者用 cnpm 安裝
npm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm i puppeteer
點擊查閱 Puppeteer API
初試 Puppeteer,截個圖吧
知識點
puppeteer.launch 啟動瀏覽器實例 browser.newPage() 創建一個新頁面 page.goto 進入指定網頁 page.screenshot 截圖const puppeteer = require('puppeteer');(async () => { const browser = await (puppeteer.launch({ // 若是手動下載的chromium需要指定chromium地址, 默認引用地址為 /項目目錄/node_modules/puppeteer/.local-chromium/ executablePath: '/Users/huqiyang/Documents/project/z/chromium/Chromium.app/Contents/MacOS/Chromium', //設置超時時間 timeout: 15000, //如果是訪問https頁面 此屬性會忽略https錯誤 ignoreHTTPSErrors: true, // 打開開發者工具, 當此值為true時, headless總為false devtools: false, // 關閉headless模式, 不會打開瀏覽器 headless: false })); const page = await browser.newPage(); await page.goto('https://www.jianshu.com/u/40909ea33e50'); await page.screenshot({ path: 'jianshu.png', type: 'png', // quality: 100, 只對jpg有效 fullPage: true, // 指定區域截圖,clip和fullPage兩者只能設置一個 // clip: { // x: 0, // y: 0, // width: 1000, // height: 40 // } }); browser.close();})();
新聞熱點
疑難解答
圖片精選