• node.js 爬虫初阶入门


    第一步,下载包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,按照找出的规律循环出数据,进行拼装,再导出
    
  • 相关阅读:
    JavaScrip--JS面向对象
    JavaScrip-Screen对象
    JavaScrip--Location对象
    安卓奇葩问题之:运行OK,打包安装崩溃(原因是:代码不规范导致编译出错)
    安卓奇葩问题之.so库加载不了
    Fresco简单的使用—SimpleDraweeView
    安卓奇葩问题之SQLite条件查找不到数据
    打包时动态指定一些值
    安卓开发:DateUtils
    SAX解析xml文件
  • 原文地址:https://www.cnblogs.com/yzyh/p/9957688.html
Copyright © 2020-2023  润新知