国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解Puppeteer 入門教程

2019-11-19 13:53:15
字體:
來源:轉載
供稿:網友

1、Puppeteer 簡介

Puppeteer 是一個node庫,他提供了一組用來操縱Chrome的API, 通俗來說就是一個 headless chrome瀏覽器 (當然你也可以配置成有UI的,默認是沒有的)。既然是瀏覽器,那么我們手工可以在瀏覽器上做的事情 Puppeteer 都能勝任, 另外,Puppeteer 翻譯成中文是”木偶”意思,所以聽名字就知道,操縱起來很方便,你可以很方便的操縱她去實現:

1) 生成網頁截圖或者 PDF
2) 高級爬蟲,可以爬取大量異步渲染內容的網頁
3) 模擬鍵盤輸入、表單自動提交、登錄網頁等,實現 UI 自動化測試
4) 捕獲站點的時間線,以便追蹤你的網站,幫助分析網站性能問題

如果你用過 PhantomJS 的話,你會發現她們有點類似,但Puppeteer是Chrome官方團隊進行維護的,用俗話說就是”有娘家的人“,前景更好。

2、運行環境

查看 Puppeteer 的官方 API 你會發現滿屏的 async, await 之類,這些都是 ES7 的規范,所以你需要:

  1. Nodejs 的版本不能低于 v7.6.0, 需要支持 async, await.
  2. 需要最新的 chrome driver, 這個你在通過 npm 安裝 Puppeteer 的時候系統會自動下載的
npm install puppeteer --save

3、基本用法

先開看看官方的入門的 DEMO

const puppeteer = require('puppeteer');(async () => { 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();})();

上面這段代碼就實現了網頁截圖,先大概解讀一下上面幾行代碼:

  1. 先通過 puppeteer.launch() 創建一個瀏覽器實例 Browser 對象
  2. 然后通過 Browser 對象創建頁面 Page 對象
  3. 然后 page.goto() 跳轉到指定的頁面
  4. 調用 page.screenshot() 對頁面進行截圖
  5. 關閉瀏覽器

是不是覺得好簡單? 反正我是覺得比 PhantomJS 簡單,至于跟 selenium-webdriver 比起來, 那更不用說了。下面就介紹一下 puppeteer 的常用的幾個 API。

3.1 puppeteer.launch(options)

使用 puppeteer.launch() 運行 puppeteer,它會 return 一個 promise,使用 then 方法獲取 browser 實例, 當然高版本的 的 nodejs 已經支持 await 特性了,所以上面的例子使用 await 關鍵字,這一點需要特殊說明一下,Puppeteer 幾乎所有的操作都是 異步的, 為了使用大量的 then 使得代碼的可讀性降低,本文所有 demo 代碼都是用 async, await 方式實現。這個 也是 Puppeteer 官方推薦的寫法。對 async/await 一臉懵逼的同學狠狠的戳這里

options 參數詳解

參數名稱 參數類型 參數說明
ignoreHTTPSErrors boolean 在請求的過程中是否忽略 Https 報錯信息,默認為 false
headless boolean 是否以”無頭”的模式運行 chrome, 也就是不顯示 UI, 默認為 true
executablePath string 可執行文件的路勁,Puppeteer 默認是使用它自帶的 chrome webdriver, 如果你想指定一個自己的 webdriver 路徑,可以通過這個參數設置
slowMo number 使 Puppeteer 操作減速,單位是毫秒。如果你想看看 Puppeteer 的整個工作過程,這個參數將非常有用。
args Array(String) 傳遞給 chrome 實例的其他參數,比如你可以使用” 主站蜘蛛池模板: 英山县| 铁岭市| 梅河口市| 大名县| 济源市| 梧州市| 湖口县| 鱼台县| 怀柔区| 抚松县| 无锡市| 鄂尔多斯市| 庆城县| 舟曲县| 盐津县| 昭平县| 揭西县| 郸城县| 贵德县| 宁乡县| 左云县| 安龙县| 瑞金市| 石台县| 沂源县| 呼图壁县| 永善县| 西乡县| 晋中市| 三明市| 招远市| 上虞市| 康平县| 重庆市| 洪江市| 城步| 木兰县| 仁化县| 兰溪市| 长治市| 富宁县|