puppeteer自动化网页的一些简单练习
作者:互联网
使用的一些练习
/** * puppeteer 自动化练习 */ const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false,//是否无头 ignoreHTTPSErrors: true,//忽略https错误 // ignoreDefaultArgs: ['--enable-automation'],//去除上方的受自动软件控制提示 args: [ '--no-sandbox', // 不开启沙箱 '--disable-features=site-per-process', // 加这个可以查看到iframe,用上面的就看不到iframe了 // `--window-size=360,640`, // 设置打开浏览器的窗口大小 '--disable-ios-password-suggestions', // 不弹出保存密码 ], }); let pages = await browser.pages();//获取所有打开的页面 const page = pages[0] await page.goto('https://www.baidu.com'); const x = { a: 1 } // const page = await browser.newPage();//创建新标签页 //设置ua为安卓 // await page.setUserAgent("Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36") // await page.setViewport({//设置页面大小 // width: 360, // height: 640, // }) // await page.goto('https://www.baidu.com'); await page.type('#kw', 'herry菌'); await page.click('#su') await page.waitForTimeout(1000) //监听打印 // page.on('console', msg => { // console.log('打印', msg.text()) // }) //等待符合条件 await page.waitForFunction(() => { return true; }) //网页中执行js代码 可传数据进去 不能传函数 await page.evaluate(async ({ x }) => { const timeout = async (t) => { return new Promise((resolve) => { setTimeout(() => { resolve() }, t) }) } await timeout(1000) $('#content_left .result').eq(0).find('a').eq(0)[0].click() }, { x }) await page.waitForTimeout(1000)//延迟 pages = await browser.pages(); const page2 = pages[1]//新打开的页面 await page2.type('#q', 'herry菌'); // await page2.evaluate(async () => { // console.log(2222) // }) // await page.waitForSelector('#content_left') //截图 // await page.screenshot({ // path: 'baidu.png', // omitBackground: true, // fullPage: true, // }); // const ua = await browser.userAgent();//获取ua // await browser.close(); })();
标签:await,const,--,pages,练习,puppeteer,网页,page,browser 来源: https://www.cnblogs.com/wuhairui/p/15603496.html