echarts怎么保存图片到剪切板上_使用node爬取网页上的图片,并保存在本地目录...

项目需求

使用NodeJS爬取指定网页上的图片,并将其保存在本地目录里。

实现思路

  • 使用request第三方库来请求网页地址;
  • 使用一个第三方库——cheerio.js来分析网页的DOM结构,得到图片的DOM,获取到图片地址。
  • 使用fs模块将其保存到本地目录

项目目录

d199d7838e8c7d31bab1660f63b2bc19.png
  • saveImg ——用来保存下载好的图片
  • analyze.js——分析网页DOM,获取图片路径的逻辑
  • config.js——包含网页地址,文件保存路径等项目配置
  • index.js——包含请求网络,保存文件等逻辑

项目源码

  • config.js
const 
  • analyze.js
const cheerio = require('cheerio');
const fs = require('fs');
const config = require('./config');
// 找到Img dom
function findImg(dom,callback) {
 let $ = cheerio.load(dom);
 $('img').each((index,dom)=>{
 let imgSrc = $(dom).attr('src');
 callback(imgSrc,index);
 })
}
module.exports = {
 findImg
}
  • index.js
const http = require('http');
const fs = require('fs');
const request = require('request');
const path = require('path');
const config = require('./config');
const analyze = require('./analyze');
/***
 * 
 * 开始网络请求
 */
function start() {
 request(config.url, (err, res, body) => {
 console.log('start spider');
 if (!err && res) {
 console.log('beginning');
 analyze.findImg(body, saveImgFile);
 }
 })
}
// 保存文件
function saveImgFile(src, index) {
 let ext = src.split('.').pop();
 let imgName = src.split('.')[0].split('/').pop();
 src = config.url + src;//具体项目具体拼接
 http.get(src, (res) => {
 let imgData = "";
 res.setEncoding("binary");
 res.on("data", function (chunk) {
 imgData += chunk;
 });
 res.on("end", function () {
 if (imgData) {
 let filePath = config.filePath +'/'+ imgName +'.'+ext;
 fs.writeFile(filePath, imgData, "binary", function (err) {
 if (err) {
 console.log("down fail");
 }
 console.log("down success");
 }); 
 } else {
 console.log('下载失败!,图片路径不存在!');
 }
 });
 })
}
start();

项目地址及使用方法

  • 项目地址
github地址: https:// github.com/Hutingtang/n ode_spider_img.git
  • 使用方法
git clone https://github.com/Hutingtang/node_spider_img.git
npm install
npm start // 或是 node ./index.js

最后

这个项目是因为自己想写一个仿站项目,但是图片资源没有,所以只能爬取网页自己的图片资源了。项目bug很多,但是基本功能是实现了的,把代码和git地址发出来供大家相互学习吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值