• 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({//设置页面大小
      //    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();
    })();
    博客园作者:herry菌,原文链接:

    朋友,看到这里,关注作者的公众号吧,不漏掉更新哦

  • 相关阅读:
    C语言的存储类别和动态内存分配
    C语言中复杂的声明
    C语言中typedef的解释_2
    C语言中类型限定符
    C语言文件I/O和标准I/O函数
    C语言中存储类别、链接与内存管理
    C++中static与const成员
    C++多态、虚函数、纯虚函数、抽象类
    sizeof结构体
    杂类
  • 原文地址:https://www.cnblogs.com/wuhairui/p/15603496.html
Copyright © 2020-2023  润新知