puppeteer使用指南


安裝

必要條件:Node版本至少 v7.6.0,因為要使用 async / await。
國外網絡,執行npm install puppeteer --save
國內網絡,執行npm install puppeteer --registry https://registry.npm.taobao.org --ignore-scripts --save
因為安裝過程中會執行install.jsinstall.js會下載Chromium。我們加參數ignore-scripts忽略install.js執行。
然后自己手動去找國內的Chromium鏡像。
推薦這個地址:http://xiazai.zol.com.cn/detail/43/429586.shtml

主要API

指定Chromium啟動的地址

不僅Chromium,Chrome也可以。

const puppeteer = require('puppeteer'); const browser = await puppeteer.launch({ executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', }); 
指定啟動瀏覽器的用戶文件數據

主要用來保存你的cookie數據,減少重復登錄。

```javascript
const puppeteer = require('puppeteer'); const browser = await puppeteer.launch({ userDataDir:'/Users/XXX/Library/Application Support/Google/Chrome/Profile 17/' }); 
指定瀏覽器的代理地址
const browser = await puppeteer.launch({ args: [ '--proxy-server=127.0.0.1:9876' ] } 
打開瀏覽器窗口讓所有操作可見

headless默認是true。

browser = await puppeteer.launch({ headless: false, slowMo: 20 }); 
導航到某個頁面
browser = await puppeteer.launch({ headless: false, slowMo: 20 }); page = await browser.newPage(); await page.goto('https://g.cn'); 
等待CSS選擇器有結果
await page.waitForSelector('#loginForm'); 
等待自定義JavaScript函數返回true
await page.waitFor(() => !document.querySelector('.test')); 
字符輸入
await page.type('#input', 'zifu'); 
Click
await page.click('#btn'); 
在瀏覽器中執行一段 JavaScript 代碼
page.evaluate(() => alert('test')); 
獲取DOM節點屬性

$eval相當於document.querySelector

const html = await page.$eval('body', e => e.outerHTML); 
獲取DOM節點屬性集合

$$eval相當於document.querySelectorAll

const textArray = await page.$$eval('#dom', els => Array.from(els).map(el => el.textContent));




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM