puppeteer 使用


配置

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)

 


免責聲明!

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



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