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

yizhihongxing

来分享一下命令行批量截图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日

相关文章

  • express框架中使用jwt实现验证的方法

    Express框架是一款快速、开放、极简的Web应用程序开发框架,而JWT(JSON Web Token)是一种用于身份验证的标准,它使用JSON作为数据载体,并使用数字签名保证数据在传输过程中不被篡改。在Express框架中使用JWT来实现验证,可以有效提升Web应用程序的安全性。下面是详细的攻略: 1. 安装jsonwebtoken包 使用npm安装js…

    node js 2023年6月8日
    00
  • Windows下nodejs安装及环境配置的实战步骤

    下面是详细的“Windows下nodejs安装及环境配置的实战步骤”攻略: 一. 下载Node.js 首先,我们需要下载Node.js的安装文件。请访问Node.js的官方网站(https://nodejs.org/),然后下载适合您计算机的版本,选择LTS版本即可。推荐使用Windows Installer (.msi)版本,下载完成后,双击打开,开始安装…

    node js 2023年6月8日
    00
  • Node.js Express 框架 POST方法详解

    一、Node.js Express 框架 POST方法详解 在Node.js开发的web应用中,通常利用Express框架去搭建应用架构,POST方法则是Express框架中常用的一种请求方式。下面详细讲解Node.js Express框架POST方法的使用方式。 二、使用Node.js Express框架的POST方法 通过如下的代码,我们可以实现一个简单…

    node js 2023年6月8日
    00
  • Node.js中你不可不精的Stream(流)

    Node.js中你不可不精的Stream(流)攻略 什么是流? 流(Stream)是Node.js中处理流式数据的抽象接口。流可以像文件一样被读取和写入,但它们是基于事件的、异步的,并且可以进行实时(即时)数据处理。 常见的流分为可读流、可写流和双工流。可读流用于从文件、网络端口和其他数据源读取数据,可写流用于将数据写入文件、网络端口和其他数据存储,而双工流…

    node js 2023年6月8日
    00
  • Sublime Text 3插件Minify的安装与使用(js代码压缩)

    下面是Sublime Text 3插件Minify的安装与使用攻略: 1. 安装Minify插件 在Sublime Text 3中安装插件可以通过Package Control来完成。如果你还没有安装它,请先安装Package Control插件,方法如下: 打开Sublime Text 3 按下Ctrl + ,(Windows)或⇧⌘P(Mac)打开命令面…

    node js 2023年6月8日
    00
  • Sequelize中用group by进行分组聚合查询

    下面我来详细讲解一下“Sequelize中用group by进行分组聚合查询”的完整攻略。 什么是group by查询? 在Sequelize中,group by查询是指将某个表按照某个字段分组,然后对每个分组进行聚合操作,比如求和、平均值等,从而得到每个分组的统计结果。 分组聚合查询的语法 在Sequelize中,我们可以使用.findAll()方法进行分…

    node js 2023年6月8日
    00
  • node安装–linux下的快速安装教程

    下面我将详细讲解“node安装–linux下的快速安装教程”的完整攻略。 1. 安装nodeJS 在Linux系统下,安装NodeJS需要进行以下步骤: 1.1 添加NodeJS官方源 在终端中执行以下命令: curl -sLhttps://deb.nodesource.com/setup_14.x | sudo -E bash – 1.2 安装NodeJ…

    node js 2023年6月8日
    00
  • 基于node.js的fs核心模块读写文件操作(实例讲解)

    基于node.js的fs核心模块读写文件操作是node.js开发者最常用的功能之一,下面我将为你详细讲解下这个核心模块的使用方法。具体内容如下: 1. fs核心模块的基本介绍 fs是node.js提供的文件系统模块,它提供了大量的文件操作API和功能。这个模块可以帮助开发者读取、写入、更改、删除文件,以及查询文件状态等。其中最常用的几个API包括: fs.r…

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