博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node批量抓取并下载小姐姐照片
阅读量:6801 次
发布时间:2019-06-26

本文共 2147 字,大约阅读时间需要 7 分钟。

背景

本人于周六早上惊醒于翠花的电话轰炸中...

一大早竟然问这么伤脑筋(愚蠢)的问题

本想赶紧打发了 继续我的回笼觉 没想到...

乐(kou)于(shui)助(zhi)人(liu)的我当然要帮帮助他了!

看到这里的红色感叹号 不禁眉头一皱

打开网站 不出我所料 姹紫嫣红的gif图片差点闪瞎我的钛合金狗眼

几番浏览欣赏后收工大吉

正文开始

所用到的模块

  • http:创建服务、处理流相关
  • fs:操作文件及文件夹(读、写)
  • cheerio:简单粗暴的理解为node界的juquey

先爬来整张网页

为了该文章正常发出 把翠花提供的链接换成站长之家的链接来演示

// 引入所需模块var http = require('http');var cheerio = require('cheerio');var fs = require('fs');// 定义爬取目标站var Url = 'http://sc.chinaz.com/tupian/'http.get(Url, function (res) {  var htmlDate = '';  // 获取页面数据  res.on('data', function (chunk) {    htmlDate += chunk;  });  // 数据获取结束  res.on('end', function () {    // 过滤出所需的元素    filterContent(htmlDate);  });}).on('error', function () {  console.log('获取数据出错!');});复制代码

过滤

分析页面结构 看看哪些是需要的 图片都在#container获取到这个节点

遍历.box 并拿到 a > img 的 srcalt

// 过滤页面信息function filterContent(htmlDate) {  if (htmlDate) {    var $ = cheerio.load(htmlDate);    // 得到所需内容    var Content = $('#container');    // 存放一会抓来的信息    var ContentData = [];    Content.find('.box').each(function (item, b) {      var pic = $(this);      // 为什么是src2?  src获取不到 打印了一下发现有src2      var src = formatUrl(pic.find('a').children('img').attr('src2'));      var name = formatUrl(pic.find('a').children('img').attr('alt'));      // 把抓来的信息交给download函数去下载      download(src, name)       // 这里也存一份      ContentData.push({        src,        name      })    });    // 存放了抓取的图片信息    console.log(ContentData)  } else {    console.log('html null');  }}复制代码

抓取链接都带有_s是缩略图 需要一个方法帮来转换

// 或取高清链接function formatUrl(imgUrl) {  return imgUrl.replace('_s', '')}复制代码
// 图片下载函数function download(url, name) {  http.get(url, function (res) {    let imgData = '';    //设置图片编码格式    res.setEncoding("binary");    //检测请求的数据    res.on('data', (chunk) => {      imgData += chunk;    })    res.on('end', () => {        // 没有文件夹则创建 以防报错      if (!fs.existsSync('./images')) {        fs.mkdirSync('./images');      };      fs.writeFile(`./images/${name}.jpg`, imgData, 'binary', (error) => {        if (error) {          console.log(error);        } else {          console.log(`${name}----下载成功!`)        }      })    })  })}复制代码

成果展示

最后晒出劳动所得

转载于:https://juejin.im/post/5cda19dd518825696125effc

你可能感兴趣的文章
国家工业信息安全产业发展联盟成立
查看>>
雅虎修改公司章程 防止激进投资者进驻董事会
查看>>
卫翰思治下的爱立信:被华为全面超越 近一年股价跌40%
查看>>
超融合设备如何影响私有云部署
查看>>
鳄鱼还是木头?亚信安全提醒:APT攻击防范要当心“水坑”
查看>>
互联健康 共融共生
查看>>
传郭台铭已与夏普高层会晤 商讨收购事宜
查看>>
政府单位专享 国内“特供版”Windows 10真的来了
查看>>
中国百毫秒量子存储器 《自然》:非凡绝技
查看>>
小鱼易连打造基于互联网环境下的高清视频会议终端
查看>>
微型传感器探测屁的来源:可为医疗提供依据
查看>>
历史性时刻!亚马逊股价突破1000美元
查看>>
互联网如何打造智慧医疗:边界确定价值
查看>>
LinkedIn高管告诫年轻人:设定好目标 不要急于求成
查看>>
科林环保子公司签下6.3亿光伏合作协议
查看>>
黑客入侵凯特王妃妹妹账号盗数千照片 欲卖给媒体
查看>>
【人生苦短,我用Python】Python免费精品课连载(1)——Python入门
查看>>
用物联网新技术保市民平安
查看>>
IBM向认知转型 选择混合云路径
查看>>
智能安防市场的痛点到底在哪里?2016欧美消费者调查问卷解读!
查看>>