用到的模块 https
用于请求child_process
用于执行shell脚本
引入内置模块 http / https
const http = require('http');
引入spawn模块 用于执行shell脚本
const { spawn } = require('child_process');
定义要获取图片的url地址
const url = 'https://www.duitang.com/article/?id=870171';
定义正则匹配
const reg = /http(s)?:\/\/([\S]*)\.(jpg|jpeg|png|gif|webp)/g;
发起请求
// 发起请求https.get(url, res => { // 定义空字符串 let str = ''; // 监听加载 res.on('data', data => { str += data; }) // 监听结束 res.on('end', () => { let i; // 每次匹配一个 while (i = reg.exec(str)) { // 取每条数据 let item = i[0]; // 执行shell脚本 传递参数 参数为 img的 地址链接 spawn('sh', ['index.sh', item]); } console.log('执行') })})
shell脚本编写
#!/bin/sh# 定义命名 时间戳 + 随机数time=$(date "+%Y%m%d%H%M%S")-$RANDOM# 取图片格式type="${1##*.}"# 如果不存在此目录 则创建if [ ! -d "img" ]; then mkdir imgfi# 发起请求 输出到指定目录指定文件名curl $1 -o ./img/$time.$type# 退出脚本exit 0;
执行index.js脚本
node index.js
执行脚本一定要在当前目录下。
如果url 是https 开头 那么发起请求 就需要用https 否则http就可以。
正常执行后,会在当前目录下,新建img文件夹,里面是下载好的图片。
index.js 完整代码
index.sh 完整代码
执行完毕img文件夹下的截图