星河避难所

返回

从手动到自动:使用 Puppeteer 高效截取大量网页截图Blur image

最近生活出了那么一点小问题。给老板做了套系统,老板拿着去做小额贷款犯法了。所以我也是被警方控制协助调查,这下真从面向对象变成面向监狱了。不过还好,因为积极配合,问题不大。

但事情远未结束。警方要求我取证,把所有后台页面都截成图。零零散散算下来,大约有 20 万张截图。这要是手动来得干几个月都说不定。于是,我开始寻求能救命的自动化工具,这时,我发现了 Puppeteer。

发现 Puppeteer#

Puppeteer 是一个由 Google 开发的 Node.js 库,它为控制无头浏览器(如 Chromium)提供了简单的 API。它不仅支持网页截图,还可以执行各种其他任务,比如网页爬虫、自动化表单提交和生成 PDF 等。

Puppeteer 入门#

要开始使用 Puppeteer,只需几个简单的步骤:

安装 Puppeteer:#

    npm install puppeteer
bash

编写基础代码#

下面是一个基础的 Puppeteer 脚本,用于打开一个网页并截取截图:

const puppeteer = require('puppeteer')

;(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://example.com')
  await page.screenshot({ path: 'example.png' })
  await browser.close()
})()
javascript

运行这个脚本后,你将在项目目录中看到访问 https://example.com 后截取到的截图文件 example.png

最终实现#

  • 使用 Puppeteer 启动一个无头浏览器来打开特定 URL,并针对不同的 tag 进行多次抓取,每个抓取过程限速 5 个并行任务
  • 为每个 data 项创建一个路径并将截图保存到该路径下。
  • 为不同的 tag 设定了不同的加载延迟时间。

结论#

使用 Puppeteer 后,曾经需要手动完成的长时间截图任务现在只需短短几分钟或几小时就能搞定。如果你也有类似需求,试试 Puppeteer,相信它会成为你高效工作的利器。

从手动到自动:使用 Puppeteer 高效截取大量网页截图
http://www.hejunjie.life/blog/e7de3872
作者 何俊杰
发布时间 2024年11月3日
版权信息 CC BY-NC-SA 4.0
评论似乎卡住了,尝试刷新?✨