`

Nodejs 爬虫批量下载百度图片

阅读更多
var fs = require('fs'),
  path = require('path'),
  util = require('util'), // 以上为Nodejs自带依赖包
  request = require('request'); // 需要npm install的包

// main函数,使用 node main执行即可
patchPreImg();

// 批量处理图片
function patchPreImg() {
  var tag1 = '摄影', tag2 = '国家地理',
    url = 'http://image.baidu.com/data/imgs?pn=%s&rn=60&p=channel&from=1&col=%s&tag=%s&sort=1&tag3=',
    url = util.format(url, 0, tag1, tag2),
    url = encodeURI(url),
    dir = 'D:/downloads/images/',
    dir = path.join(dir, tag1, tag2),
    dir = mkdirSync(dir);

  request(url, function(error, response, html) {
    var data = JSON.parse(html);
    if (data && Array.isArray(data.imgs)) {
      var imgs = data.imgs;
      imgs.forEach(function(img) {
        if (Object.getOwnPropertyNames(img).length > 0) {
          var desc = img.desc || ((img.owner && img.owner.userName) + img.column);
          desc += '(' + img.id + ')';
          var downloadUrl = img.downloadUrl || img.objUrl;
          downloadImg(downloadUrl, dir, desc);
        }
      });
    }
  });
}

// 循环创建目录
function mkdirSync(dir) {
  var parts = dir.split(path.sep);
  for (var i = 1; i <= parts.length; i++) {
    dir = path.join.apply(null, parts.slice(0, i));
    fs.existsSync(dir) || fs.mkdirSync(dir);
  }
  return dir;
}

var index = 1;
// 开始下载图片,并log统计日志
function downloadImg(url, dir, desc) {
  var fileType = 'jpg';
  if (url.match(/\.(\w+)$/)) fileType = RegExp.$1;
  desc += '.' + fileType;
  var options = {
    url: url,
    headers: {
      Host: 'f.hiphotos.baidu.com',
      Cookie: 'BAIDUID=810ACF57B5C38556045DFFA02C61A9F8:FG=1;'
    }
  };
  var startTime = new Date().getTime();
  request(options)
    .on('response', function() {
      var endTime = new Date().getTime();
      console.log('Downloading...%s.. %s, 耗时: %ss', index++, desc, (endTime - startTime) / 1000);
    })
    .pipe(fs.createWriteStream(path.join(dir, desc)));
}

 

 

若有疑问,请发表评论或添加微信为你解答:

分享到:
评论

相关推荐

    nodejs 爬虫框架-哔哩搜索 v1.0

    同时也是一个简单高效的nodejs爬虫模型。github上有好几个这样的开源项目,但是都只提供了爬虫部分,这个项目在爬虫的基础上还增加了保存数据,建立elasticsearch索引的模块,可以用在实际生产环境中,不过web模块...

    nodejs爬虫抓取页面内容

    nodejs爬虫抓取页面内容,简单好用

    nodejs制作爬虫实现批量下载图片

    通过这个项目,我们可以学习到如何在Node.js环境中构建一个完整的网络爬虫,实现从抓取网页到解析数据,再到批量下载图片的整个流程。同时,也了解了如何优化异步操作的性能和控制并发执行,这对于任何需要处理大量...

    nodejs简单爬虫

    本项目"nodejs简单爬虫"正是利用了Node.js的这一特性,以JavaScript语言编写了一个基础的网络爬虫。 首先,我们需要理解什么是网络爬虫。网络爬虫,又称为网页蜘蛛或机器人,是一种自动抓取互联网信息的程序。它...

    nodeJs爬虫获取数据简单实现代码.doc

    nodeJs爬虫获取数据简单实现代码.doc

    nodejs批量下载图片的实现方法

    本文主要讲述了使用Node.js实现批量下载图片的方法。 首先,当我们需要从网页上下载图片时,通常的思路是利用网络请求库(如request)向目标网页发送请求,获取到网页内容后,通过DOM解析库(如cheerio)来解析DOM...

    nodejs网络图片爬虫

    Node.js网络图片爬虫是一种利用Node.js开发的程序,用于自动化地从互联网上抓取图片资源。这种爬虫通常基于HTTP或HTTPS协议,通过发送GET请求到目标网站,解析返回的HTML页面,提取图片URL,并下载这些图片。Node.js...

    nodejs视频教程百度网盘

    nodejs视频教程,可以快速帮助你入门nodejs开发中,nodejs不错哦

    详解nodejs爬虫程序解决gbk等中文编码问题

    使用nodejs写了一个爬虫的demo,目的是提取网页的title部分。 遇到最大的问题就是网页的编码与nodejs默认编码不一致造成的乱码问题。nodejs支持utf8, ucs2, ascii, binary, base64, hex等编码方式,但是对于汉语言...

    基于NodeJs爬虫的职位信息可视化系统源码+文档+全部资料(高分项目).zip

    基于NodeJs爬虫的职位信息可视化系统源码+文档+全部资料(高分项目).zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下...

    基于nodejs的知乎爬虫,x-zse-96,支持文章,评论,图片下载到本地.zip

    这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。...

    基于nodejs的微博爬虫

    最后,爬虫将抓取到的图片URL下载到本地。这通常涉及到异步操作,因为每个图片的下载可能需要一定时间,为了提高效率,可以采用并发下载的方式,但要注意不要过于频繁,以免对目标网站造成过大压力,引起反爬策略。 ...

    Nodejs实现批量下载妹纸图

    从标题、描述和部分内容中,我们可以提取以下知识点: 1. Nodejs基础:Nodejs是一种基于Chrome V8引擎的JavaScript运行环境,能够支持...这些知识点的结合,共同构成了一个Nodejs环境下批量下载图片的基础框架。

    网页版nodejs爬虫工具.zip

    这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。...

    基于nodejs的股票数据爬虫.zip

    这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。...

    简单好用的nodejs 爬虫框架分享

    如果一个链接符合下载条件(例如指向图片或视频文件),则使用crawler_handle.addDown方法将该链接加入下载队列;如果一个链接不符合下载条件(例如指向CSS或JavaScript文件),则使用crawler_handle.addPage方法将...

    nodejs自动批量翻译中文到其它语言.pdf

    nodejs自动批量翻译中文到其它语言.pdf

    Nodejs导出Excel带图片,Nodejs后台导出带图片Excel

    Nodejs导出Excel带图片,Nodejs后台导出带图片Excel 本资源内有说明及使用安装等详细步骤,以及引入插件 由于nodejs导出Excel带图片的资源比较少,我也是找了许久才知道怎么写的,这里发布个收费的,望各位见谅!

    nodejs爬虫初试superagent和cheerio

     早就听过爬虫,这几天开始学习nodejs,写了个爬虫https://github.com/leichangchun/node-crawlers/tree/master/superagent_cheerio_demo,爬取 博客园首页的文章标题、用户名、阅读数、推荐数和用户头像,现做个小...

Global site tag (gtag.js) - Google Analytics