配置
page.setViewport: 設置視圖大小
// 設置 瀏覽器視窗 await page.setViewport({ width: 1300, height: 938, });
page.setUserAget: 設置UserAgent
await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36');
page.SetCookie: 設置Cookie
const cookies = [{ 'name': 'cookie1', 'value': 'val1' },{ 'name': 'cookie2', 'value': 'val2' },{ 'name': 'cookie3', 'value': 'val3' }]; await page.setCookie(...cookies); const cookiesSet = await page.cookies(url);
另外,也可以使用emulate函數提供快捷設置,puppeteer/DeviceDescriptors還提供了常用設備的預設
const puppeteer = require('puppeteer'); const devices = require('puppeteer/DeviceDescriptors');| const iPhone = devices['iPhone 6']; puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.emulate(iPhone); await page.goto('https://www.google.com'); // other actions... await browser.close(); }); //除此之外,還可以使用page.setExtraHTTPHeaders設置其它HttpHeader
頁面跳轉
page.goto(url, options) 打開新頁面
await page.goto('https://www.baidu.com', { timeout: 30 * 1000, waitUntil: [ 'load', //等待 “load” 事件觸發 'domcontentloaded', //等待 “domcontentloaded” 事件觸發 'networkidle0', //在 500ms 內沒有任何網絡連接 'networkidle2' //在 500ms 內網絡連接個數不超過 2 個 ] });
page.goBack(options) 回退到上一個頁面
page.goForward(options) 前進到下一個頁面
page.reload(options) 重新加載頁面
page.waitForNavigation(options) 等待頁面跳轉
元素抓取
await page $(selector) 返回document.querySelector對象,沒有返回null
await page $("a")
await page $$(selector) 返回document.querySelectorAll對象(數組格式),沒有返回[ ]
await page.$$("a")
await page $eval(selector, pageFunction[,...args]) 獲取單個元素屬性
const searchValue = await page.$eval('#search', el => el.value); const preloadHref = await page.$eval('link[rel=preload]', el => el.href); const text = await page.$eval('.text', el => el.textContent); const html = await page.$eval('.main-container',e => e.outerHTML);
const data-id = await page.$eval('a', e => e.getAttribute('data-id'));
await page $$eval(selector, pageFunction[,...args]) 獲取多個元素屬性,一般都是獲取元素長度判斷是否存在
const divLenth = await page.$$eval("div", e => e.length)