命令行批量截图Node脚本示例代码

来分享一下命令行批量截图Node脚本的完整攻略。

简介

有时候我们需要在网站上批量截取图片,例如某个网站上有大量图标,需要逐个下载,这时候手动截图就会变得非常繁琐。如果使用Node.js编写一个命令行脚本,就可以轻松实现批量截屏。

安装及使用

  1. 安装Node.js

下载并安装合适版本的 Node.js。

  1. 安装ChromeHeadless

ChromeHeadless是 Chrome 浏览器的无界面版本,可以通过脚本调用 ChromeHeadless 来进行页面截图

安装 ChromeHeadless:

Ubuntu 和 Debian:

sudo apt-get install -y libnss3-tools chromium-browser

macOS:

brew install chromium

或直接从谷歌官方下载:https://www.google.com/chrome/

  1. 安装Puppeteer

Puppeteer是一个由 Google Chrome 官方团队维护的用于控制 ChromeHeadless 的库。

安装Puppeteer(切换至淘宝镜像进行安装会更快):

npm i puppeteer -S --registry=https://registry.npm.taobao.org
  1. 编写代码

代码示例:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.baidu.com');
  await page.setViewport({width: 1000, height: 800});

  const links = [
    {url: 'https://www.baidu.com', name: 'baidu_home'},
    {url: 'https://www.google.com', name: 'google_home'}
  ];

  for (let i = 0; i < links.length; i++) {
    await page.goto(links[i].url, {waitUntil: 'networkidle2'});
    await page.screenshot({path: `./${links[i].name}.png`});
  }

  await browser.close();
})();

上述代码经过简单封装,可以方便的实现从一组网址列表中批量截屏,图片会被保存在当前目录下。

示例说明

  1. 获取多个网站的截图

目标:获取多个网站主页截图

示例代码:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setViewport({width: 1000, height: 800});

  const links = [
    {url: 'https://www.baidu.com', name: 'baidu_home'},
    {url: 'https://www.google.com', name: 'google_home'},
    {url: 'https://github.com', name: 'github_home'}
  ];

  for (let i = 0; i < links.length; i++) {
    await page.goto(links[i].url, {waitUntil: 'networkidle2'});
    await page.screenshot({path: `./${links[i].name}.png`});
  }

  await browser.close();
})();
  1. 获取同一个网站多个页面的截图

目标:获取百度首页、知道、图片、文库、视频五个页面的截图

示例代码:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setViewport({width: 1000, height: 800});

  const links = [
    {url: 'https://www.baidu.com', name: 'baidu_home'},
    {url: 'https://zhidao.baidu.com', name: 'baidu_zhidao'},
    {url: 'https://image.baidu.com', name: 'baidu_image'},
    {url: 'https://wenku.baidu.com', name: 'baidu_wenku'},
    {url: 'https://v.baidu.com', name: 'baidu_video'}
  ];

  for (let i = 0; i < links.length; i++) {
    await page.goto(links[i].url, {waitUntil: 'networkidle2'});
    await page.screenshot({path: `./${links[i].name}.png`});
  }

  await browser.close();
})();

总结

通过Node.js编写的命令行脚本,可以轻松实现批量截屏的需求,Puppeteer提供了丰富的API供我们调用。利用一些简单的控制流语句,我们可以方便的实现从一组网址列表中批量截屏的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:命令行批量截图Node脚本示例代码 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中的console.timeEnd方法使用说明

    当我们需要测量代码执行时间时,可以使用console.time()和console.timeEnd()方法。其中console.time()方法用来记录开始时间,console.timeEnd()方法用来记录结束时间并输出执行时间。 具体使用说明如下: 1. console.timeEnd()方法的语法 console.timeEnd(label); 其中,…

    node js 2023年6月8日
    00
  • react diff 算法实现思路及原理解析

    React Diff 算法是 React 的核心算法之一,用于对比两个 Virtual DOM 树的差异,从而最小化对浏览器 DOM 树的操作,提高页面渲染性能。 下面是 React Diff 算法的实现思路及原理解析: 两棵 Virtual DOM 树的比较 React Diff 算法的核心就是对比两棵 Virtual DOM 树的差异。对比过程包括以下几…

    node js 2023年6月8日
    00
  • Node.js实现在目录中查找某个字符串及所在文件

    首先,实现在目录中查找某个字符串及所在文件的过程需要借助Node.js的文件系统(fs)模块和字符串操作相关的库,比如string-search、string-similarity等。 以下是详细的实现步骤: 1.安装依赖库 npm install string-search 2.编写Node.js代码 const fs = require(‘fs’); c…

    node js 2023年6月8日
    00
  • NodeJS学习笔记之(Url,QueryString,Path)模块

    下面是关于“NodeJS学习笔记之(Url,QueryString,Path)模块”的完整攻略: 什么是Url,QueryString和Path? 在介绍Url,QueryString和Path模块之前,我们先来了解一下他们的概念: Url: 统一资源定位符,是指向互联网“资源”的指针。 QueryString: 查询字符串,是Url中问号后面的部分,包括多…

    node js 2023年6月8日
    00
  • 利用PM2部署node.js项目的方法教程

    利用PM2部署node.js项目的方法教程 简介 PM2是一个Node.js进程管理器,可用于管理和部署Node.js项目。它可以在多个进程之间负载平衡,自动重启崩溃的进程并进行日志记录。在这篇攻略中,我们将介绍如何使用PM2来部署和管理Node.js项目。 安装 PM2是通过npm安装的,因此您需要在本地安装Node.js和npm。安装Node.js和np…

    node js 2023年6月8日
    00
  • nodejs实现套接字服务功能详解

    Node.js实现套接字服务功能详解 本文介绍了如何使用Node.js实现套接字(Socket)服务功能。Socket是在应用程序之间传输数据的一种机制,即一种在计算机网络上运行的进程间通信机制。在Node.js中,可以使用net模块来创建套接字服务器。下面详细介绍Net模块的使用方法。 Net模块 Net模块提供了一个用于创建TCP或本地套接字服务器的AP…

    node js 2023年6月8日
    00
  • Node.js的项目构建工具Grunt的安装与配置教程

    下面为大家详细讲解“Node.js的项目构建工具Grunt的安装与配置教程”的完整攻略。 一、Grunt是什么 Grunt是一款基于Node.js的项目构建工具,可以自动化执行一些常见的任务,例如对CSS、JavaScript等文件进行打包、压缩、合并、校验等操作,从而提高开发效率。 二、安装Grunt Grunt依赖于Node.js和npm包管理工具,因此…

    node js 2023年6月8日
    00
  • 三步教你完成切换nodejs版本

    以下是“三步教你完成切换nodejs版本”的完整攻略: 1.安装nvm nvm全称Node Version Manager,可以方便地切换nodejs的版本。官网链接:https://github.com/nvm-sh/nvm。 在命令行终端执行以下命令安装: curl -o- https://raw.githubusercontent.com/nvm-sh…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部