资讯专栏INFORMATION COLUMN

好用的 Puppeteer 辅助工具 Puppeteer Recorder

Faremax / 2699人阅读

摘要:下图是以点击排行榜上用户加关注为栗子录制的脚本。注意事项目前这个项目还比较简单,通过分析几种生成代码,这样还是会有比较多的问题。这些问题本身也是开发前分析网页甚至需要遇到的问题,改成自动脚本仍需注意。以下为部分源码参考

Puppeteer

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

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

但是

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

Puppeteer Recorder

Puppeteer Recorder 是Chrome扩展程序,可记录你的浏览器交互并生成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://www.ucloud.cn/yun/108363.html

相关文章

  • 使用Node.js爬取任意网页资源并输出高质量PDF文件到本地~

    摘要:上面只爬取了京东首页的图片内容,假设我的需求进一步扩大,需要爬取京东首页中的所有标签对应的跳转网页中的所有的文字内容,最后放到一个数组中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文适合无论是否有爬虫以及Node.js基础的朋友观看~ 需求: 使用Node.js爬取网页资源,开箱即用的配置 将爬取到的...

    seasonley 评论0 收藏0
  • 使用Node.js爬取任意网页资源并输出高质量PDF文件到本地~

    摘要:上面只爬取了京东首页的图片内容,假设我的需求进一步扩大,需要爬取京东首页中的所有标签对应的跳转网页中的所有的文字内容,最后放到一个数组中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文适合无论是否有爬虫以及Node.js基础的朋友观看~ 需求: 使用Node.js爬取网页资源,开箱即用的配置 将爬取到的...

    xiaoxiaozi 评论0 收藏0
  • 使用Node.js爬取任意网页资源并输出高质量PDF文件到本地~

    摘要:上面只爬取了京东首页的图片内容,假设我的需求进一步扩大,需要爬取京东首页中的所有标签对应的跳转网页中的所有的文字内容,最后放到一个数组中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文适合无论是否有爬虫以及Node.js基础的朋友观看~ 需求: 使用Node.js爬取网页资源,开箱即用的配置 将爬取到的...

    wangym 评论0 收藏0
  • Puppeteer入门教程和实践

    摘要:通过启动时的命令行参数仅能实现简易的启动时初始化操作。是谷歌官方出品的一个通过协议控制的库。使用和例子类似其他框架,通过操作实例来操作浏览器作出相应的反应。简单例子的入门和实践求赞,另外欢迎访问我的博客 出现的背景 Chrome59(linux、macos)、 Chrome60(windows)之后,Chrome自带headless(无界面)模式很方便做自动化测试或者爬虫。但是如何和h...

    mindwind 评论0 收藏0

发表评论

0条评论

Faremax

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<