第一步,下载包superagent,cheerio####

npm i cheerio //-----cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。相当于node.js中的jQuery
npm i superagent  //-----superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下

第二步,在index.js中引入包####

var cheerio = require('cheerio');
var superagent = require('superagent');

第三步,代码整理####

superagent.get('https://tieba.baidu.com/index.html')
    .end(function (err, sres) {
      if (err) {
        return next(err);
      }
    /**
     *这里的sres.text就是爬取页面的html,可以在下方打印
     */
      console.log('页面的html:', sres.text)
      /**
       *cheerio也就是nodejs下的jQuery  将整个文档包装成一个集合,定义一个变量$接收
       */
      var $ = cheerio.load(sres.text);
      var items = [];
        /**
         * 可以先看看页面结构,找出你想爬取的数据,餐后操作dom取得数据
         */
      $('.directory-wraper').find('a').each(function (idx, element) {
        var $element = $(element);
       /**
         * 拼装数据
         */
        items.push({
          title: $element.title,
          href:  $element.attr('href')
        });
        //这里的items就是我们要的数据
      });
    });

第四步:导出####

    //这里我们要用到fs进行导出
   //引入fs
   var fs = require('fs')
   //调用fs writeFile方法 写入数据, 文件不存在会自动创建 fs.writeFile(路径及文件名,写入的数据,回调函数)
     fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
	     if (err) throw err;
	     console.log('创建文件成功222');
     });

最后的代码汇总####

superagent.get('https://tieba.baidu.com/index.html')
    .end(function (err, sres) {
      if (err) {
        return next(err);
      }
//    console.log('页面的html:', sres.text)
      var $ = cheerio.load(sres.text);
      var items = [];
      $('.directory-wraper').find('a').each(function (idx, element) {
        var $element = $(element);
        items.push({
          title: $element.title,
          href:  $element.attr('href')
        });
      });
      //删除文件
      fs.unlink('D:/test2.txt',function(err){
      	try{
      		if (err) throw err;
      		// 写入数据, 文件不存在会自动创建
			fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
			  if (err) throw err;
			  console.log('创建文件成功111');
			});
      	}catch(e){
      		// 写入数据, 文件不存在会自动创建
			fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
			  if (err) throw err;
			  console.log('创建文件成功222');
			});
      	}
      	console.log('删除文件成功!!')
      	
      })

总结####

思路:找到爬取目标网页,找到网页需要爬取的数据,发现规律,先用superagent得到网页,再导入cheerio,按照找出的规律循环出数据,进行拼装,再导出
posted on 2018-11-14 14:20  佑之以航  阅读(153)  评论(0编辑  收藏  举报