Nodejs实现爬虫抓取数据实例解析


Posted in NodeJs onJuly 05, 2018

开始之前请先确保自己安装了Node.js环境,如果没有安装,大家可以到三水点靠木下载安装。

1.在项目文件夹安装两个必须的依赖包

npm install superagent --save-dev

superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下

npm install cheerio --save-dev

cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。相当于node.js中的jQuery

2.新建  crawler.js  文件

//导入依赖包
const http    = require("http");
const path    = require("path");
const url    = require("url");
const fs     = require("fs");
const superagent = require("superagent");
const cheerio  = require("cheerio");

3.获取 Boos直聘数据

superagent
  .get("https://www.zhipin.com/job_detail/?city=100010000&source=10&query=%E5%89%8D%E7%AB%AF")
  .end((error,response)=>{
    //获取页面文档数据
    var content = response.text;
    //cheerio也就是nodejs下的jQuery 将整个文档包装成一个集合,定义一个变量$接收
    var $ = cheerio.load(content);
    //定义一个空数组,用来接收数据
    var result=[];
    //分析文档结构 先获取每个li 再遍历里面的内容(此时每个li里面就存放着我们想要获取的数据)
    $(".job-list li .job-primary").each((index,value)=>{
      //地址和类型为一行显示,需要用到字符串截取
      //地址
      let address=$(value).find(".info-primary").children().eq(1).html();
      //类型
      let type=$(value).find(".info-company p").html();
      //解码
      address=unescape(address.replace(/&#x/g,'%u').replace(/;/g,''));
      type=unescape(type.replace(/&#x/g,'%u').replace(/;/g,''))
      //字符串截取
      let addressArr=address.split('<em class="vline"></em>');
      let typeArr=type.split('<em class="vline"></em>');
      //将获取的数据以对象的形式添加到数组中
      result.push({
        title:$(value).find(".name .job-title").text(),
        money:$(value).find(".name .red").text(),
        address:addressArr,
        company:$(value).find(".info-company a").text(),
        type:typeArr,
        position:$(value).find(".info-publis .name").text(),
        txImg:$(value).find(".info-publis img").attr("src"),
        time:$(value).find(".info-publis p").text()
      });
      // console.log(typeof $(value).find(".info-primary").children().eq(1).html());
    });
    //将数组转换成字符串
    result=JSON.stringify(result);
    //将数组输出到json文件里 刷新目录 即可看到当前文件夹多出一个boss.json文件(打开boss.json文件,ctrl+A全选之后 ctrl+K,再Ctrl+F即可将json文件自动排版)
    fs.writeFile("boss.json",result,"utf-8",(error)=>{
      //监听错误,如正常输出,则打印null
      if(error==null){
        console.log("恭喜您,数据爬取成功!请打开json文件,先Ctrl+A,再Ctrl+K,最后Ctrl+F格式化后查看json文件(仅限Visual Studio Code编辑器)");
      }
    });
  });

总结

以上所述是小编给大家介绍的Nodejs实现爬虫抓取数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
用nodejs写的一个简单项目打包工具
May 11 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs的路径问题的解决
Jun 30 #NodeJs
nodejs用gulp管理前端文件方法
Jun 24 #NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 #NodeJs
nodejs实现套接字服务功能详解
Jun 21 #NodeJs
详解Nodejs mongoose
Jun 10 #NodeJs
详解NodeJs开发微信公众号
May 25 #NodeJs
nodejs express配置自签名https服务器的方法
May 22 #NodeJs
You might like
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP5 安装方法
2007/01/15 PHP
深入apache host的配置详解
2013/06/09 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
python常用排序算法的实现代码
2019/11/08 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
css3学习心得分享
2013/08/19 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
刚毕业大学生自荐信范文
2014/02/20 职场文书
大学新闻系求职信
2014/06/03 职场文书
鼓舞士气的口号
2014/06/16 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python访问Redis的详细操作
2021/06/26 Python