node实现的爬虫功能示例


Posted in Javascript onMay 04, 2018

本文实例讲述了node实现的爬虫功能。分享给大家供大家参考,具体如下:

node是服务器端的语言,所以可以像python一样对网站进行爬取,下面就使用node对博客园进行爬取,得到其中所有的章节信息。

第一步: 建立crawl文件,然后npm init。

第二步: 建立crawl.js文件,一个简单的爬取整个页面的代码如下所示:

var http = require("http");
var url = "http://www.cnblogs.com";
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function () {
    console.log(html);
  });
}).on("error", function () {
  console.log("获取课程结果错误!");
});

即引入http模块,然后利用http对象的get请求,即一旦运行,相当于node服务器端发送了一个get请求请求这个页面,然后通过res返回,其中on绑定data事件用来不断地接受数据,最后end时我们就在后台打印出来。

这只是整个页面的一部分,我们可以在此页面审查元素,发现确实是一样的

我们只需要将其中的章节title和每一小节的信息爬到即可。

第三步: 引入cheerio模块,如下:(在gitbash中安装即可,cmd总是出问题)

cnpm install cheerio --save-dev

这个模块的引入,就是为了方便我们操作dom,就像jQuery一样。

第四步: 操作dom,获取有用信息。

var http = require("http");
var cheerio = require("cheerio");
var url = "http://www.cnblogs.com";
function filterData(html) {
  var $ = cheerio.load(html); 
  var items = $(".post_item");
  var result = [];
  items.each(function (item) {
    var tit = $(this).find(".titlelnk").text();
    var aut = $(this).find(".lightblue").text();
    var one = {
      title: tit,
      author: aut
    };
    result.push(one);
  });
  return result;
}
function printInfos(allInfos) {
  allInfos.forEach(function (item) {
    console.log("文章题目 " + item["title"] + '\n' + "文章作者 " + item["author"] + '\n'+ '\n');
  });
}
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function (data) {
    var allInfos = filterData(html);
    printInfos(allInfos);
  });
}).on("error", function () {
  console.log("爬取博客园首页失败")
});

即上面的过程就是在爬取博客的题目和作者。

最终后台输出如下:

node实现的爬虫功能示例

这和博客园首页的内容是一致的:

node实现的爬虫功能示例

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
JS的参数传递示例介绍
Feb 08 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
jQuery复制表单元素附源码分享效果演示
Sep 30 Javascript
Node.js实用代码段之正确拼接Buffer
Mar 17 Javascript
select标签设置默认选中的选项方法
Mar 02 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
基于jQuery.i18n实现web前端的国际化
May 04 #jQuery
JavaScript实现百度搜索框效果
Mar 26 #Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 #Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 #Javascript
JS模拟实现哈希表及应用详解
May 04 #Javascript
vue地区选择组件教程详解
May 04 #Javascript
Vue 按键修饰符处理事件的方法
May 04 #Javascript
You might like
PHP IPV6正则表达式验证代码
2010/02/16 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
python实现划词翻译
2020/04/23 Python
Python中多线程及程序锁浅析
2015/01/21 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
keras中的backend.clip用法
2020/05/22 Python
python 制作本地应用搜索工具
2021/02/27 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
商场消防管理制度
2014/01/12 职场文书
个人简历中自我评价
2014/02/11 职场文书
护理工作个人总结
2015/03/03 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
Python实现简单的猜单词
2021/06/15 Python
详解pytorch创建tensor函数
2022/03/22 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript