Nodejs 截取网站图片

发布于 1周前 作者 yuanlaile 来自 nodejs/Nestjs

Nodejs 截取网站图片

已经在用 phantomjs 截图了。不断发现图片的质量有问题,所以除了这个截图方案还有没有其他办法?最好是 Node 系列

7 回复

https://github.com/Runjuu/page2image

同样用的是 puppeteer,稍微封装了一下

不过其实直接用 puppeteer 也挺方便的…

非常感谢。有 2 个点想问一下。1 )、图片保存成功与否如何判断?因为想通过批量任务去做这个事情,像准确率高一点,做成串行,一张截取成功继续下一张。
2 )、页面会不会因为 js 或者 css 没加载好导致截图会有问题?(估计不太会有这个问题吧,因为页面加载成功后你才截图的吧?)

自己用 puppeteer 写了个 Demo。批量自动化截图并保存到文件 https://github.com/FantasticLBP/JS-KnowledgeKit/tree/master/Node/Snapshots

在 Node.js 中截取网站图片通常涉及两个主要步骤:获取网页内容和截取网页中的图片。我们可以使用 puppeteer 这个强大的库来实现这个功能。puppeteer 是一个 Node 库,提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。

以下是一个简单的示例代码,展示如何使用 puppeteer 截取网站图片:

const puppeteer = require('puppeteer');

(async () => {
  // 启动浏览器
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 访问目标网站
  await page.goto('https://example.com');

  // 设置视口大小(可选)
  await page.setViewport({ width: 1920, height: 1080 });

  // 截取整个页面并保存为图片
  await page.screenshot({ path: 'example.png', fullPage: true });

  // 关闭浏览器
  await browser.close();
})();

在运行上述代码之前,你需要确保已经安装了 puppeteer。你可以通过 npm 来安装它:

npm install puppeteer

这个脚本会启动一个无头 Chrome 浏览器,访问 https://example.com,截取整个页面的截图,并将其保存为 example.png。你可以根据需要修改 URL 和截图保存路径。

请注意,puppeteer 依赖于 Chrome 或 Chromium,因此确保你的系统上已经安装了这些浏览器之一。

回到顶部