• 好用的 Puppeteer 辅助工具 Puppeteer Recorder


    Puppeteer

    Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的ChromeChromium,常用于爬虫、自动化测试等,你在浏览器手动完成的大多数事情都可以使用它来完成。

    站内有很多文章介绍Puppeteer,此处就不再介绍。

    但是

    但是无论是爬虫还是自动化测试,你要写Puppeteer脚本,首先你得分析网页,并且讲道理,每个网站还都不一样,这就很尴尬。

    Puppeteer Recorder

    Puppeteer RecorderChrome扩展程序,可记录你的浏览器交互并生成Puppeteer脚本。

    下图是以segmentfault点击排行榜上用户加关注为栗子录制的脚本。看上去是不是很有规律,写入cookie再改成for循环,一个自动加关注的脚本就完成了。
    图片描述

    注意事项

    目前这个项目还比较简单,通过分析几种event生成代码,这样还是会有比较多的问题。
    比如,最后得到selector和点击前的selector不一致。selectorjs脚本动态生成,需要waitFor去等待等等。
    这些问题本身也是开发前分析网页甚至debug需要遇到的问题,改成自动脚本仍需注意。

    以下为部分源码

    
     _parseEvents (events) {
        console.debug(`generating code for ${events.length} events`)
        let result = ''
        for (let event of events) {
          const { action, selector, value, href, keyCode } = event
          switch (action) {
            case 'keydown':
              result += this._handleKeyDown(selector, value, keyCode)
              break
            case 'click':
              result += this._handleClick(selector, href)
              break
            case 'goto*':
              result += `  await page.goto('${href}')
    `
              break
            case 'reload':
              result += `  await page.reload()
    `
              break
          }
        }
        return result
      }
      _handleKeyDown (selector, value, keyCode) {
        if (keyCode === 9) return `  await page.type('${selector}', '${value}')
    `
        return ''
      }
    

    参考

    Puppeteer
    Puppeteer Recorder

    来源:https://segmentfault.com/a/1190000016073329

  • 相关阅读:
    jdk环境变量配置
    智商太低,竟然算不出病狗神题了
    HDU 1284 钱币兑换问题 母函数、DP
    linux下实现监控进程网络带宽
    编程算法
    C語言 rand函数 进阶探讨与实现
    JDBCUtil
    iOS进阶路线以及进阶书籍
    Windows平台CUDA开发之前的准备工作
    数据库中substring的用法 CONVERT(varchar(12) , getdate(), 112 )
  • 原文地址:https://www.cnblogs.com/datiangou/p/10179795.html
Copyright © 2020-2023  润新知