Puppeteer系列
2、Puppeteer筆記(二):Puppeteer安裝及實例Demo
3、Puppeteer筆記(三):Puppeteer獲取元素及元素屬性
4、Puppeteer筆記(四):Puppeteer模擬鍵盤
5、Puppeteer筆記(五):Puppeteer文件上傳
6、Puppeteer筆記(六):Puppeteer切換frame操作
7、Puppeteer筆記(七):Puppeteer切換瀏覽器TAB頁
8、Puppeteer筆記(八):Puppeteer執行自定義Javascript方法
一、Puppeteer環境准備
1、Puppeteer環境要求:
查看 Puppeteer 的官方 API 你會發現滿屏的 async, await 之類,這些都是 ES7 的規范,所以你需要:
(1)Nodejs 的版本不能低於 v7.6.0, 需要支持 async, await.
(2)需要最新的 chrome driver, 這個你在通過 npm 安裝 Puppeteer 的時候系統會自動下載的
2、Puppeteer環境准備
(1)安裝node,官網地址:https://nodejs.org/zh-cn/
並校驗node是否安裝成功:node -v
(2)安裝Puppeteer:npm install puppeteer --save
安裝puppeteer時會自帶安裝內置Chromium,如Chromium下載失敗,可手動下載Chromium。
二、快速上手實例Demo
測試功能:打開百度首頁,輸入“hello world”,搜索查詢並截圖。
創建Test.js,輸入以下代碼:
1 //引入puppeteer 2 const puppeteer = require('puppeteer'); 3 /* 4 創建一個Browser瀏覽器實例,並設置瀏覽器實例相關參數 5 headless: 是否在無頭模式下運行瀏覽器,默認是true 6 defaultViewport:設置頁面視口大小,默認800*600,如果為null的話就禁用視圖口 7 args:瀏覽器實例的其他參數 8 defaultViewport: null, args: ['--start-maximized']:最大化視圖窗口展示 9 ignoreDefaultArgs: ['--enable-automation']: 10 禁止展示chrome左上角有個Chrome正受自動軟件控制,避免puppeteer被前端JS檢測到 11 */ 12 puppeteer.launch({ 13 headless: false, 14 defaultViewport: null, 15 args: ['--start-maximized'], 16 ignoreDefaultArgs: ['--enable-automation'] 17 }).then(async browser => { 18 //創建一個Page實例 19 const page = await browser.newPage(); 20 //打開百度首頁 21 await page.goto('https://www.baidu.com'); 22 //定位輸入框元素 23 const input_area = await page.$('#kw'); 24 //在輸入框元素中輸入"hello world" 25 await input_area.type("hello world"); 26 //定位搜索按鈕元素 27 const search_btn = await page.$('#su'); 28 //點擊按鈕元素 29 await search_btn.click(); 30 //等待3s 31 await page.waitFor(3000); 32 //截圖並在根目錄保存 33 await page.screenshot({ 34 path: 'baidu.png' 35 }); 36 //關閉Chromium 37 await browser.close(); 38 });