文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

node.js简单爬虫的方法是什么

2023-07-04 17:15

关注

这篇文章主要介绍“node.js简单爬虫的方法是什么”,在日常操作中,相信很多人在node.js简单爬虫的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node.js简单爬虫的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

步骤一:安装node.js

下载并安装node,此步骤比较简单就不详细解释了,有问题的可以直接问一下度娘。

步骤二:建立工程

1)打开dos命令条,cd进入想要创建项目的路径(我将此项目直接放在了E盘,以下皆以此路径为例);

2)mkdir node (创建一个文件夹用来存放项目,我这里取名为node);

3)cd 进入名为node的文件夹,并执行npm init初始化工程(期间会让填写一些信息,我是直接回车的);

步骤三:创建爬取到的数据存放的文件夹

1)创建data文件夹用来存放发型师基本信息;

2)创建image文件夹用来存储发型师头像图片;

  此时工程下文件如下: 

node.js简单爬虫的方法是什么

步骤四:安装第三方依赖包(fs是内置模块,不需要单独安装)

1)npm install cheerio –save

2)npm install superagent –save

3)npm install async –save

4)npm install request –save

分别简单解释一下上面安装的依赖包:

cheerio:是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现,则能够对请求结果进行解析,解析方式和jQuery的解析方式几乎完全相同;

superagent:能够实现主动发起get/post/delete等请求;

async:async模块是为了解决嵌套金字塔,和异步流程控制而生,由于nodejs是异步编程模型,有一些在同步编程中很容易做到的事情,现在却变得很麻烦。Async的流程控制就是为了简化这些操作;

request:有了这个模块,http请求变的超简单,Request使用简单,同时支持https和重定向; 

步骤五:编写爬虫程序代码

打开hz.js,编写代码:

var superagent = require('superagent'); var cheerio = require('cheerio');var async = require('async');var fs = require('fs');var request = require('request');var page=1; //获取发型师处有分页功能,所以用该变量控制分页var num = 0;//爬取到的信息总条数var storeid = 1;//门店IDconsole.log('爬虫程序开始运行......');function fetchPage(x) {   //封装函数  startRequest(x); }function startRequest(x) {  superagent    .post('http://tweixin.yueyishujia.com/v2/store/designer.json')    .send({       // 请求的表单信息Form data      page : x,       storeid : storeid    })      // Http请求的Header信息    .set('Accept', 'application/json, text/javascript, */*; q=0.01')    .set('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')    .end(function(err, res){           // 请求返回后的处理      // 将response中返回的结果转换成JSON对象      if(err){        console.log(err);      }else{        var designJson = JSON.parse(res.text);        var deslist = designJson.data.designerlist;        if(deslist.length > 0){          num += deslist.length;          // 并发遍历deslist对象          async.mapLimit(deslist, 5,             function (hair, callback) {            // 对每个对象的处理逻辑               console.log('...正在抓取数据ID:'+hair.id+'----发型师:'+hair.name);               saveImg(hair,callback);            },             function (err, result) {              console.log('...累计抓取的信息数→→' + num);            }          );          page++;          fetchPage(page);        }else{          if(page == 1){            console.log('...爬虫程序运行结束~~~~~~~');            console.log('...本次共爬取数据'+num+'条...');            return;          }          storeid += 1;          page = 1;          fetchPage(page);        }      }    });} fetchPage(page);function saveImg(hair,callback){  // 存储图片  var img_filename = hair.store.name+'-'+hair.name + '.png';  var img_src = 'http://photo.yueyishujia.com:8112' + hair.avatar; //获取图片的url  //采用request模块,向服务器发起一次请求,获取图片资源  request.head(img_src,function(err,res,body){    if(err){      console.log(err);    }else{        request(img_src).pipe(fs.createWriteStream('./image/' + img_filename));   //通过流的方式,把图片写到本地/image目录下,并用发型师的姓名和所属门店作为图片的名称。        console.log('...存储id='+hair.id+'相关图片成功!');    }  });  // 存储照片相关信息  var html = '姓名:'+hair.name+'<br>职业:'+hair.jobtype+'<br>职业等级:'+hair.jobtitle+'<br>简介:'+hair.simpleinfo+'<br>个性签名:'+hair.info+'<br>剪发价格:'+hair.cutmoney+'元<br>店名:'+hair.store.name+'<br>地址:'+hair.store.location+'<br>联系方式:'+hair.telephone+'<br>头像:<img src='+img_src+' >';  fs.appendFile('./data/' +hair.store.name+'-'+ hair.name + '.html', html, 'utf-8', function (err) {    if (err) {      console.log(err);    }  });  callback(null, hair);}

步骤六:运行爬虫程序

输入node hz.js命令运行爬虫程序,效果图如下:

node.js简单爬虫的方法是什么

运行成功后,发型师基本信息以html文件的形式存储在data文件夹中,发型师头像图片存储在image文件夹下。

到此,关于“node.js简单爬虫的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯