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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
使用Nodejs开发微信公众号后台服务实例
Sep 03 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 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
PHP入门学习笔记之一
2010/10/12 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
php简单分页类实现方法
2015/02/26 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Windows下python2.7.8安装图文教程
2016/05/26 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
亚运会口号
2014/06/20 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
授权委托书样本
2014/09/25 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技